有沒有辦法讓一個.NET程序集可以訪問只有授權的來源?限制對.NET程序集的訪問?
我的意思是我想有一個包含組件的DLL,但我不希望任何人能在我的解決方案中使用這些組件,但其他DLL EXE文件。 我確實希望它們處於分離的DLL中。
如果此功能存在,命名空間的限制也可能是一個好主意。
有沒有辦法?
有沒有辦法讓一個.NET程序集可以訪問只有授權的來源?限制對.NET程序集的訪問?
我的意思是我想有一個包含組件的DLL,但我不希望任何人能在我的解決方案中使用這些組件,但其他DLL EXE文件。 我確實希望它們處於分離的DLL中。
如果此功能存在,命名空間的限制也可能是一個好主意。
有沒有辦法?
您可以創建內部類。並通過使用InternalsVisibleTo屬性給你指定的程序集來訪問這些類。
該程序集應該是強命名的。您可以在this article中找到有關該屬性的更多信息。
另請參閱http://www.bryancook.net/2008/05/tdd-tips-internalsvisibleto-keep-your.html – TrueWill 2009-09-12 22:46:16
問題與內部類是內部沒有意義在IL和類可以通過反射被調用。所以使用InternalsVisibleTo對於編譯器來說比其他任何東西都更有幫助。
你可以更進一步使用StrongNameIdentityPermission這將檢查強調用程序集的公鑰調用代碼 - 如果公鑰不匹配則引發安全異常。即使通過反射調用代碼,也會執行此操作。
正在使用操作系統訪問控制列表好嗎?獲取用戶,並檢查使用某些已知的文件,目錄,等... – kenny 2009-09-12 21:34:01
任何事情都是welcommed,請發表你的想法的答案,讓人們可以投票。 – Shimmy 2009-09-12 22:25:11