2011-04-19 57 views
3

我正在寫一個類庫,其中包含純粹內部成員的類。我把這些分成了命名空間。這些內部班級沒有公共或受保護的成員。
問題是,當我在客戶端應用程序中使用此類庫時,這些名稱空間顯示在intellisense上。當然,它們不包含任何accessable項目,所以它只是結束,但我擔心這可能會混淆庫的用戶
例如:保持內部類的名稱空間不會出現在intellisense

 
    namespace mynamespace.yournamespace 
    { 
     internal class blah 
     { 
      internal void function1(){}; 
      internal void function2(){}; 
     } 
    } 

當使用外部智能感知會顯示:mynamespace.yournamespace但不提供任何成員(因爲他們是內部的)。
那麼問題是,有沒有辦法阻止那些內部類在intellisense中出現,還是我只是不擔心?或.....如果它的內部,它甚至需要它自己的命名空間?
任何幫助表示讚賞

(有一個類似的帖子在:How can I prevent a public class that provides extension methods from appearing in Intellisense?這是不確定的。)

+0

沒有「需要」一個名稱空間。您可以完全省略一個名稱空間,這會將事物放入沒有名稱的「默認」名稱空間中。因此,一個內部類是否需要一個名稱空間是一個最佳實踐的問題 - 該語言當然允許你沒有一個。 – 2011-04-19 13:56:07

+0

感謝您的輸入。我猜這是(隱含)的問題的一部分......也許只是傾倒所有的東西到根或「空白」命名空間是最好的方式 – rigamonk 2011-04-19 13:58:45

回答

1

不,我不認爲有一種方法。基於錯誤

錯誤1命名空間聲明

不能有修飾符或屬性

我不看你怎麼可以指定一個命名空間應該被隱藏。

這可能是唯一的(?)其他方式是在Intellisense設置中包含/排除列表,但它們不在那裏。

1

你可以嘗試EditorBrowsableAttribute - 這是記錄隱藏在不同的裝配中定義的類中的一員,但保持它是可見的,如果它是相同的程序集。聽起來很適合internal - 雖然我沒有自己嘗試過。

我想它不適用於你的鏈接問題,因爲它只適用於屬性或方法:「指定一個屬性或方法在編輯器中可見。」

+0

我試了一下,但它不會編譯:錯誤名稱空間聲明不能有修飾符或屬性 – rigamonk 2011-04-19 15:10:20

+0

@rigamonk沒錯,它不適用於命名空間。 – 2011-04-19 16:17:49

相關問題