2009-09-12 88 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这将检查强调用程序集的公钥调用代码 - 如果公钥不匹配则引发安全异常。即使通过反射调用代码,也会执行此操作。