C# 是否可以在宿主程序集上进行反射?

C# 是否可以在宿主程序集上进行反射?,c#,C#,例如,IIS承载ASP程序集,SQL Server承载SqlClr程序集。如果我要编写一个托管服务器应用程序,那么托管程序集是否可以反映在托管应用程序上?或者应用程序域可以防止这种情况 作为记录,我并不是试图对其他人的程序集进行反射,我更感兴趣的是防止其他人对我的程序集进行反射。如果宿主程序集具有反射权限(请参阅),则它可以对其掌握的任何类型进行反射。因此,如果您担心有人“窥探”您的代码,请确保托管程序集在没有该权限的情况下运行沙盒 注意:Microsoft不断更改适用于其他每个service

例如,IIS承载ASP程序集,SQL Server承载SqlClr程序集。如果我要编写一个托管服务器应用程序,那么托管程序集是否可以反映在托管应用程序上?或者应用程序域可以防止这种情况


作为记录,我并不是试图对其他人的程序集进行反射,我更感兴趣的是防止其他人对我的程序集进行反射。

如果宿主程序集具有反射权限(请参阅),则它可以对其掌握的任何类型进行反射。因此,如果您担心有人“窥探”您的代码,请确保托管程序集在没有该权限的情况下运行沙盒


注意:Microsoft不断更改适用于其他每个service pack的确切限制。保存时假设声明为“public”的所有内容都将允许代码在反射中使用它,而不考虑权限:但是由于托管代码必须通过这些公共API与托管应用程序交互,无论哪种方式,隐藏它们不被反射都不会带来任何真正的好处。

Hmm.对于一种底层是“私有”程序集,中间是通用公共信息程序集的分层蛋糕解决方案,您认为如何,顶部是用户程序集?这样的层解决方案应该可以防止受限程序集窥视“私有”程序集中的任何内容。就我个人而言,我围绕一个公共的“Something.Interfaces.dll”设计了基于插件(即托管)的应用程序,该应用程序是公共的,真正的exe都是内部的。很酷,非常感谢你的回答。是的,web服务器或SQL服务器运行在一个门上有坚固锁的房间里。这使得“其他人”以及他们的代码远离你。软件安全从来都不是物理安全的替代品。