Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么只允许动态方法跳过可见性检查?_.net_Clr_Reflection.emit - Fatal编程技术网

.net 为什么只允许动态方法跳过可见性检查?

.net 为什么只允许动态方法跳过可见性检查?,.net,clr,reflection.emit,.net,Clr,Reflection.emit,我正在移植大量使用DynamicMethods的代码,以允许预编译,从而获得更好的冷启动性能。我注意到DynamicMethods可以通过跳过可见性检查进行JIT和执行,这允许它们访问私有嵌套类型,但普通程序集不能(或者不能?我看不到任何明显的加载程序选项)。这个设计决策背后的基本原理是什么?我需要挥手回答这个问题,CAS永远是复杂的。skipVisibility参数与生成在沙箱中执行的代码的受信任主机应用程序相关。在这种情况下,在生成方法时执行检查是不合适的,因为执行环境是错误的。它需要在方法

我正在移植大量使用
DynamicMethod
s的代码,以允许预编译,从而获得更好的冷启动性能。我注意到
DynamicMethod
s可以通过跳过可见性检查进行JIT和执行,这允许它们访问私有嵌套类型,但普通程序集不能(或者不能?我看不到任何明显的加载程序选项)。这个设计决策背后的基本原理是什么?

我需要挥手回答这个问题,CAS永远是复杂的。skipVisibility参数与生成在沙箱中执行的代码的受信任主机应用程序相关。在这种情况下,在生成方法时执行检查是不合适的,因为执行环境是错误的。它需要在方法在沙箱中执行时发生。在沙箱中进行常规CAS检查

将参数设置为true实际上会添加ReflectionPermissionFlag.MemberAccess的权限需求,这是获得生成方法的机会所必需的


乱七八糟的。“向沙盒域添加受限成员访问权限”部分中有一些背景信息。

-unity,因为这与Microsoft unity无关。你可能会阅读这篇博文,但确实需要一定的权限才能阅读。因此,如果你想限制这种尝试,你可以。