如何让 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 发现继承的子类?的主要内容,如果未能解决你的问题,请参考以下文章