是否可以禁用.NET程序集的反射?

Clu*_*ess 5 .net reflection

我想在我的API上运行第三方.NET程序集.我想让它按自己的意愿调用自己的方法和对象,但是拒绝它访问我的API没有明确给出的任何东西.特别是,如果我的API将对象传递给第三方代码,因为IMyObject我不希望它们使用反射或任何方法来提升该对象,比如MyObject实现接口.

有没有办法否认在第三方程序集中使用反射的能力?我完全控制了一切,所以我不需要阻止人们反编译我的程序集,只是在运行时滥用它.

dec*_*one 4

您正在寻找的是在沙箱中运行程序集。这可以通过 .Net 来实现CAS (Code Access Security)

下面是它的工作原理。您创建一个AppDomain,为其分配有限的权限。例如,您允许显示 UI,但不允许使用文件系统或反射。然后将程序集加载到其中并让它运行。

.Net 4.0 引入了全新的安全模型。但我对此了解不多。

这里有一些可以帮助您开始的东西:

探索使用 .NET Framework 2.0 安全托管不受信任的加载项的技术