![](/img/trans.png)
[英]In Visual Studio Immediate window, why do I get Equals/GetHashCode/GetType/ToString as IntelliSense options for Button object?
[英]Hiding GetHashCode/Equals/ToString from fluent interface classes intellisense in Visual Studio for C#?
我有一個流暢的IoC容器注冊過程接口,其中包含一些用於構建注冊的類。
例如,我可以這樣做:
builder.Register<IFoo>().From.ConcreteType<Foo>();
但是,在點后面的每一步,都會彈出intellisense,顯示Object類,GetHashCode,Equals,GetType和ToString中的四種標准方法。
我嘗試在幾個類中重寫這些方法,將EditorBrowsableAttribute屬性附加到每個類,但它們仍然顯示出來。 我沒有辦法隱藏它們嗎?
請注意,我並不是試圖將它們隱藏在類本身之外,只是來自intellisense。
基本上,我喜歡這個:
+---------------+
builder.Register<IFoo>().|As |
|By |
|Equals | <-- remove this
|From |
|GetHashCode | <-- and this
|GetType | <-- as well as this
|ToString | <-- and finally this
+---------------+
這是我在Register<T>
返回的類中嘗試的:
[EditorBrowsable(EditorBrowsableState.Never)]
public override Boolean Equals(Object obj)
{
return base.Equals(obj);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override Int32 GetHashCode()
{
return base.GetHashCode();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override String ToString()
{
return base.ToString();
}
這顯然不起作用。 還有什么我可以嘗試的嗎?
我還嘗試添加一個新方法,不是從Object
重寫,並將相同的屬性應用於該方法,並且也顯示出來,所以很明顯該屬性沒有按照我的想法去做。
我注意到文檔中的注釋沒有從同一個程序集中隱藏東西,但我嘗試創建一個新項目,它們仍然顯示在那里。
好的,我找到了解決方案,部分是我的錯,部分文檔不完整。
我的錯是我沒有在正確的類中標記所有方法,但即使糾正了這些方法,這些方法仍然出現了。
原文中的說明如下:
在Visual C#中,EditorBrowsableAttribute不會抑制同一程序集中的類的成員。
應該是(強調我的):
在Visual C#中,EditorBrowsableAttribute不會在同一個開放解決方案中禁止來自類的成員。
我在相應的類中標記了方法,進行了完全重建,在解決方案文件之外創建了一個新項目,從我的IoC項目中對已編譯文件進行了文件引用,並且看到方法消失了。
我會留下這個問題以防其他人有這個問題。
根據線程 ,它是設計的。 使用EditorBrowsable(EditorBrowsableState.Never)
修飾的方法/屬性僅在intellisense中隱藏,如果它們是另一個引用的程序集中的類的一部分。 該組件不應該是同一解決方案的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.