2010-05-04 45 views
3

我正在設計一個WPF應用程序,它使用一個可能有40個公共類的DLL。我需要公開這些信息,原因很多,包括數據綁定和混淆的簡便性。我想讓其他人只使用這些類的一部分作爲我的軟件的API。我可以通過不同的「API」DLL公開一個.NET DLL的公共類的一部分嗎?

我以爲我會創建主庫(core.dll)和一個API庫(coreAPI.dll)與在新項目中引用的API DLL。有沒有辦法讓coreAPI.dll只公開core.dll中存在的一些類?這不是一個安全問題,因爲我主要想從Visual Studio Intellisense中隱藏一些不需要的類。

同樣,我想隱藏的類的內部類並不是一個真正的選擇,因爲我需要將數據綁定到WPF中的一些類,爲此,它們必須是公共的。有沒有其他的方法來做到這一點?

+0

我不知道這是否會與綁定工作,但你看着InternalsVisibleTo的http:// MSDN。 microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx – 2010-05-04 07:35:21

+0

是的,我起初嘗試過,但事實證明,與內部lsVisibleTo,混淆幾乎是不可能的,它也不適用於數據綁定。 – 2010-05-04 07:37:44

回答

3

由於達米安已經提到,如果您唯一想要的做的是從智能感知隱藏您可以將以下屬性添加到您的隱藏類:

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] 
0

如果主要問題是智能感知,那麼將這些類移動到一個單獨的名稱空間肯定會有訣竅?

當然,您可以將類拆分爲兩個獨立的程序集。您可能會遇到一些問題,因爲必須公開更多的課程(因爲他們現在生活在單獨的程序集中),這可能是可以使用InternalsVisibleTo屬性解析的

+0

我想保持我的命名空間與dll名稱相同,但我可能會接受您的建議。理想情況下,我還希望暴露的類屬性在Intellisense中顯示爲只讀。 – 2010-05-04 07:43:00

相關問題