簡體   English   中英

在Visual Studio for C#中從流暢的接口類intellisense隱藏GetHashCode / Equals / ToString?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM