2012-01-15 68 views

回答

6

宣佈你可以用你的方法EditorBrowsableAttribute方法的提示。

EditorBrowsableAttribute指定某個屬性或方法在編輯器中可見。 EditorBrowsableAttribute是一個提示指示的屬性或方法是否是要顯示的設計者。您可以在可視化設計器或文本編輯器中使用此類型來確定用戶可見的內容。例如,Visual Studio中的IntelliSense引擎使用此屬性來確定是否顯示屬性或方法。

喜歡的東西

[EditorBrowsable(EditorBrowsableState.Never)] 
  public void GetId() 
   { 
    } 
+1

只要使用同一個程序集中的代碼,EditorBrowsable將被忽略 – 2012-01-15 15:21:47

+0

感謝您的寶貴回答:) – Neelima 2012-01-19 13:52:11

5

你將需要明確落實。

如果你的界面:

interface IFoo{ 
    void DoSomething(); 
} 

那麼你可以實現一個明確的類象下面這樣:

class Foo : IFoo { 
    void IFoo.DoSomething(); 
} 

話雖這麼說,你可能想考慮你爲什麼要這麼做。一個接口通常用來定義一個給定類型的對象的能力約定。想要隱藏它可能是設計過程中誤入歧途的一種氣味。當然,使用顯式實現也有很多有效的情況。例如。 Dictionary對IEnumerable>中的很多方法都有明確的實現。但隱藏應該比規則更加例外。

如果聲明接口類型的方法將顯示,如果聲明,他們將不會顯示具體類型的成員/變量的變量/成員。因爲你通常應該prefere到具體的類接口,這又是你可能在想原因找想要隱藏在接口

+0

謝謝,這是有意義的我...其實這是一個面試問題,你能告訴我,如果有,我們可以隱藏任何其他方式intellisense中的接口方法? – Neelima 2012-01-19 13:51:36

+0

@Neilima這是一個非常奇怪的面試問題,至少有兩個原因。 1)沒有完美的答案。使用該屬性只能在程序集外部工作,並且顯式實現不適用於此目的。 2)這是一個你知道的事情,或者你不質疑。這些類型的問題,不告訴你什麼關於受訪者的大約只有他或她的記憶,但對他們的設計,分析或一般問題解決 – 2012-01-20 09:11:35

+0

非常感謝符文....我認爲,智能感知能力沒什麼profficiency當我們明確地實施它時不會支持。這意味着,當我們寫一個接口名稱和加一個點,我們不應該在intellisene方法名......可能是我需要回答,「在明確的執行,我們不會得到IntelliSense支持」 ... :) – Neelima 2012-01-24 19:07:58