gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:47:05 25 4
gpt4 key购买 nike

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

最佳答案

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

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

天翻地覆。 this MSDN article 中有一些背景信息,“将 RestrictedMemberAccess 添加到沙盒域”部分。

关于.net - 为什么只允许动态方法跳过可见性检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com