2008-11-17 41 views
2

有什麼辦法可以從Intellisense'隱藏'一個類的名字,其唯一目的是提供擴展方法?如何防止提供擴展方法的公共類出現在Intellisense中?

我想從智能感知列表中刪除類名,但需要通過常規方式通過智能感知向外部程序集提供該類的擴展方法。

+0

對於一個好問題+1; `System.Web。*`提供他們自己的`StringExtensions`,並且它總是將名稱標識爲Intellisense中的不明確。不會破壞任何東西,但我不喜歡在任何地方看到紅色的感嘆號。 – Dan 2013-12-06 17:06:36

回答

1

好吧,我有這個答案。標記與類..

[EditorBrowsable(EditorBrowsableState.Never)] 

..does實際工作,但只有在裝配被引用的Hallgrim的建議,而不是項目,因爲是同時寫在我自己的VS解決方案的情況下提供該類的組件。擴展方法可以照常使用。

1

你的意思是你想隱藏類或擴展方法嗎?

如果您將靜態類放入其自己的名稱空間中,那麼任何不使用using指令導入該名稱空間的代碼將不會「查看」擴展方法。

+0

隱藏類 - 我不需要用戶看到提供方法的類的類名 - 然而方法應該照常運行(即可以針對Intellisense中適當的支持類型提供) - 是否有意義? – flesh 2008-11-17 10:57:15

+0

排序,但我不認爲你會實現它。如果他們看到課堂,真的是一個問題嗎?我不記得intellisense是否顯示擴展方法來自哪裏,但是如果它發生了,我會驚訝於(作爲用戶)看到一個我不能看到任何蹤跡的類名。 – 2008-11-17 11:01:51

2

我希望你可以給這個與EditorBrowsable屬性:

[EditorBrowsable(EditorBrowsableState.Never)] 
static class MyExtensions { } 

不幸的是這似乎並沒有工作。

0

如果您將擴展方法放在模塊中,則會有一個名爲HideModuleName的屬性,它將隱藏模塊名稱以顯示在Intellisense中。

相關問題