2009-09-12 85 views
6

有沒有辦法讓一個.NET程序集可以訪問只有授權的來源?限制對.NET程序集的訪問?

我的意思是我想有一個包含組件的DLL,但我不希望任何人能在我的解決方案中使用這些組件,但其他DLL EXE文件。 我確實希望它們處於分離的DLL中。

如果此功能存在,命名空間的限制也可能是一個好主意。

有沒有辦法?

+0

正在使用操作系統訪問控制列表好嗎?獲取用戶,並檢查使用某些已知的文件,目錄,等... – kenny 2009-09-12 21:34:01

+0

任何事情都是welcommed,請發表你的想法的答案,讓人們可以投票。 – Shimmy 2009-09-12 22:25:11

回答

6

您可以創建內部類。並通過使用InternalsVisibleTo屬性給你指定的程序集來訪問這些類。

該程序集應該是強命名的。您可以在this article中找到有關該屬性的更多信息。

+0

另請參閱http://www.bryancook.net/2008/05/tdd-tips-internalsvisibleto-keep-your.html – TrueWill 2009-09-12 22:46:16

5

問題與內部類是內部沒有意義在IL和類可以通過反射被調用。所以使用InternalsVisibleTo對於編譯器來說比其他任何東西都更有幫助。

你可以更進一步使用StrongNameIdentityPermission這將檢查強調用程序集的公鑰調用代碼 - 如果公鑰不匹配則引發安全異常。即使通過反射調用代碼,也會執行此操作。