2014-03-25 41 views
6

我有一個場景,Visual Studio(2012)智能感知無法識別在繼承類中定義的子類。它可能是最好的一個簡單的例子證明:如何讓Visual Studio Intellisense發現一個繼承的子類?

public class Shape { 

    public class SubShape { 
    } 

} 

public class Circle : 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的,則一切都按預期工作。

+0

您是否嘗試過2013?我有2013(專業)和Resharper,它的工作原理就像你在這裏描述的那樣。不知道是否是Reharper或VS2013雖然 –

+0

謝謝!你可以嘗試禁用ReSharper,看看它是否仍然有效?我想你可以在2012年通過工具 - >選項 - > ReSharper對話框輕鬆完成。如果我打開ReSharper並選擇使用VS的ReSharper的Intellisense intead,它也適用於我...所以在2012年,它似乎是ReSharper修復的Visual Studio錯誤。 –

+1

只是禁用它,它看起來像一個ReSharper功能:(我會用VS2013旗艦版測試,當我回家時,看看它是否存在 –

回答

0

這可能是一個智能感知錯誤(很小),也發生在VS2010。

奇怪的是,聲明一個變量做了智能感知,既

Shape.SubShape s; 
Circle.SubShape s; 

鍵入時,會點後列出子形。