使用MethodBuilder生成动态IL时是否可以跳过可见性检查?

Bra*_*uff 13 c# cil reflection.emit

使用DynamicMethod生成IL时,如果为DynamicMethod构造函数中的restrictedSkipVisibility参数提供'true',则可以调用方法和访问本来无法访问的字段.

我宁愿将动态IL发送到动态程序集中,这样我就可以在构建时将生成的IL保存到程序集中.如果我使用这种方法,我必须使用MethodBuilder而不是DynamicMethod.但是我需要能够跳过可见性检查,所以当我运行动态代码时,我没有得到MethodAccessException.有没有办法做到这一点,如果是这样的话怎么样?

Lau*_*ble 3

在动态程序集中使用 MethodBuilder 时,您必须遵守与编译器生成的程序集相同的规则。因此,程序集间的可见性由以下因素控制:

  • ReflectionPermission属性
  • InternalsVisibleTo属性

请阅读文档和示例,看看它是否可以满足您的需求。