2011-05-12 63 views
4

我記得簡單地讀過,你可以添加程序集屬性,這樣你只能允許特定程序集調用程序集。但我不記得我在哪裏看到或如何去做 - 有人能指引我朝着正確的方向嗎?什麼是允許您限制對DLL的訪問的屬性?

只是要明確,這個問題是問:

  1. 我有一個組裝和裝配B.
  2. 大會B需要組件A內訪問某些成員(們)
  3. 兩個組件將以軟件產品的形式發送給其他人。
  4. 我只想集B能夠看到組件A成員
  5. 任何人誰需要使用在組件中的東西都將通過組裝B.大會A的成員這樣做的所有隱藏/內部使第三各方不能看到它們。
+0

哪個框架版本? – 2011-05-12 15:30:26

+0

v4,更新的標籤。 – 2011-05-12 15:31:59

回答

4

您可以使用InternalsVisibleTo Attribute來允許引用程序集的程序集查看標記爲internal的類和成員。我相信沒有辦法阻止大會引用你的程序集並訪問所有的public類和成員。

注意:使用反射,任何組件可以訪問任何類或成員,而不管是否是publicinternal(或private),所提供的應用程序與完全信任(其通常是這種情況)上運行。

+0

這就是我需要的。我希望公共成員是公開的,但是內部要跨越程序集。我現在就試試看。 – 2011-05-12 15:32:58

1

Friend Assemblies是你在找什麼:

朋友集會是 可以訪問其他程序集的朋友 (Visual Basic)或內部(C#)類型 和成員的程序集。如果您將一個 裝配標識爲朋友裝配,則不必將其類型和成員 標記爲公開,以使它們可以由其他裝配訪問 。

0

沒有這樣的程序集屬性,只有一個程序集屬性與類型可見性相關,該程序集允許其他程序集對內部程序集的訪問 - InternalsVisibleToAttribute

+0

這就是我所指的。 – 2011-05-12 15:37:42

0

我不認爲你可以設置任何屬性來限制訪問。

我用這個鏈接作爲參考。

http://msdn.microsoft.com/en-us/library/4w8c1y2s(v=vs.71).aspx

對於DLL的代碼本身,儘量使用內部標記,只有組件能夠訪問項目。對於外界真正可以訪問的物品,請將其標記爲公開。

+0

是的 - 我想我的問題不清楚,我會更新它,因爲@ dtb的答案正是我所期待的。 – 2011-05-12 15:42:13

相關問題