代码之家  ›  专栏  ›  技术社区  ›  sircodesalot

是否可以反映宿主程序集?

c#
  •  2
  • sircodesalot  · 技术社区  · 13 年前

    例如,IIS承载ASP程序集,SQL Server承载SqlClr程序集。如果我要编写一个宿主服务器应用程序,宿主程序集是否可以反映宿主应用程序?或者应用程序域可以防止这种情况发生吗?

    郑重声明,我并不是想反思别人的集会,我更感兴趣的是防止别人反思我的集会。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Roman Gruber    13 年前

    如果承载的程序集具有“反射”权限(请参见 http://msdn.microsoft.com/en-us/library/system.security.permissions.reflectionpermission.aspx ),它可以反映它所掌握的任何类型。因此,如果你担心有人“窥探”你的代码,请确保托管的程序集在没有该权限的情况下运行沙盒。

    注意:Microsoft不断更改适用于其他service pack的确切限制。假设所有声明为“public”的内容都允许代码在反射中使用它,而不考虑权限,这是可取的: http://msdn.microsoft.com/en-us/library/system.security.permissions.reflectionpermissionflag.aspx 但是,由于托管代码必须通过这些公共API与托管应用程序进行交互,因此将它们隐藏起来以避免反射不会带来任何真正的好处。