![]() |
2
5
解决方法(针对我的特定问题)是使用委托而不是直接方法调用。您可以轻松地构造一个打开的委托并将其传递给IL代码,然后当IL代码调用委托的invoke方法时,JIT接受该模式为合法模式并允许调用私有方法。 正如我所说,这是一个解决方案(它很高兴地允许运行时生成的代码调用私有方法),但它仍然无法解释表达式树和反射等技术如何调用私有方法。 |
![]() |
3
-1
使用call,而不是callvirt。 [编辑:不是一般性建议,而是专门针对这个问题] callvirt用于调用虚拟方法,其中目标地址还取决于实例的确切类型。当你使用弱引用时,这不起作用。 另一方面,私有方法的目标可以在编译时确定。因此,使用调用调用它是合适的。 |