如何让 Visual Studio Intellisense 发现继承的子类?

Posted

技术标签:

【中文标题】如何让 Visual Studio Intellisense 发现继承的子类?【英文标题】:How to get Visual Studio Intellisense to discover an inherited subclass? 【发布时间】:2014-05-03 22:09:59 【问题描述】:

我有一个场景,Visual Studio (2012) Intellisense 无法识别在继承类中定义的子类。最好用一个简单的例子来说明:

public class Shape 

    public class SubShape 
    



public class Circle : Shape 

所以我有一个带有 SubShape 子类的 Shape 类,以及继承自 Shape 的 Circle。

如果我随后尝试使用 new Circle.SubShape() 实例化 SubShape 实例,则在 new Circle. 之后,我无法从 Visual Studio 的 Intellisense 获得任何结果。一切都正确构建,没有语法错误。

如果我使用 new Shape.SubShape() 从基类中引用该类,则 Intellisense 可以工作。如果我一开始不使用 new 关键字,它也能正常工作——因此输入 Circle. 会为我提供 SubShape 作为选项。

我使用的是 Visual Studio 2012,版本 11.0.61030.00 Update 4

更新:我已禁用 ReSharper,但如果我打开它并选择使用 ReSharper 的 Intellisense 而不是 Visual Studio,一切都会按预期工作。

【问题讨论】:

你试过2013吗?我有 2013 (Professional) 和 Resharper,它的工作原理与您在此处描述的一样。不知道是 Reharper 还是 VS2013 做的呢 谢谢!您可以尝试禁用 ReSharper 并查看它是否仍然有效?我认为无论如何,您都可以在 2012 年通过工具 -> 选项 -> ReSharper 对话框轻松完成此操作。如果我打开 ReSharper 并选择使用 ReSharper 的 Intellisense 而不是 VS,它也适用于我......所以在 2012 年,它似乎是 ReSharper 修复的 Visual Studio 错误。 刚刚禁用它,它看起来像是一个 ReSharper 功能 :(。我回家后用 VS2013 Ultimate 进行测试,看看它是否存在 刚刚测试,是Resharper的功能。 CodeRush 也有这个功能 :) 【参考方案1】:

这可能是一个 Intellisense 错误(非常轻微),也发生在 VS2010 中。

奇怪的是,声明一个变量确实有智能感知,即两者兼而有之

Shape.SubShape s;
Circle.SubShape s;

键入时,将在点后列出子形状。

【讨论】:

以上是关于如何让 Visual Studio Intellisense 发现继承的子类?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Visual Studio Intellisense 发现继承的子类?

如何让 Visual Studio 自动升级项目?

如何让 Visual Studio 连接到 Windows 应用商店?

如何让 Visual Studio 项目的内部版本号增加?

如何让2017年的Visual Studio看到android 7?

如何让 Visual Studio Code linter 忽略一行?