6

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

4

1 回答 1

2

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

将参数设置为 true 实际上会增加对 ReflectionPermissionFlag.MemberAccess 的权限要求,需要尝试生成方法。

天翻地覆。这篇 MSDN 文章“将 RestrictedMemberAccess 添加到沙盒域”部分中有一些背景信息。

于 2013-06-10T19:57:48.703 回答