我記得簡單地讀過,你可以添加程序集屬性,這樣你只能允許特定程序集調用程序集。但我不記得我在哪裏看到或如何去做 - 有人能指引我朝着正確的方向嗎?什麼是允許您限制對DLL的訪問的屬性?
只是要明確,這個問題是問:
- 我有一個組裝和裝配B.
- 大會B需要組件A內訪問某些成員(們)
- 兩個組件將以軟件產品的形式發送給其他人。
- 我只想集B能夠看到組件A成員
- 任何人誰需要使用在組件中的東西都將通過組裝B.大會A的成員這樣做的所有隱藏/內部使第三各方不能看到它們。
我記得簡單地讀過,你可以添加程序集屬性,這樣你只能允許特定程序集調用程序集。但我不記得我在哪裏看到或如何去做 - 有人能指引我朝着正確的方向嗎?什麼是允許您限制對DLL的訪問的屬性?
只是要明確,這個問題是問:
您可以使用InternalsVisibleTo Attribute來允許引用程序集的程序集查看標記爲internal
的類和成員。我相信沒有辦法阻止大會引用你的程序集並訪問所有的public
類和成員。
注意:使用反射,任何組件可以訪問任何類或成員,而不管是否是public
或internal
(或private
),所提供的應用程序與完全信任(其通常是這種情況)上運行。
這就是我需要的。我希望公共成員是公開的,但是內部要跨越程序集。我現在就試試看。 – 2011-05-12 15:32:58
Friend Assemblies是你在找什麼:
朋友集會是 可以訪問其他程序集的朋友 (Visual Basic)或內部(C#)類型 和成員的程序集。如果您將一個 裝配標識爲朋友裝配,則不必將其類型和成員 標記爲公開,以使它們可以由其他裝配訪問 。
沒有這樣的程序集屬性,只有一個程序集屬性與類型可見性相關,該程序集允許其他程序集對內部程序集的訪問 - InternalsVisibleToAttribute。
這就是我所指的。 – 2011-05-12 15:37:42
我不認爲你可以設置任何屬性來限制訪問。
我用這個鏈接作爲參考。
http://msdn.microsoft.com/en-us/library/4w8c1y2s(v=vs.71).aspx
對於DLL的代碼本身,儘量使用內部標記,只有組件能夠訪問項目。對於外界真正可以訪問的物品,請將其標記爲公開。
是的 - 我想我的問題不清楚,我會更新它,因爲@ dtb的答案正是我所期待的。 – 2011-05-12 15:42:13
哪個框架版本? – 2011-05-12 15:30:26
v4,更新的標籤。 – 2011-05-12 15:31:59