我有一个相当复杂的场景,我想创建一个附加到内存中 AssemblyBuilder 中的类的 DynamicMethod。动态方法在我的(常规)程序集中调用方法“GetReplacement”。
这在 .NET 2.0 中运行良好,但在 .NET 4.0 中出现错误:
MethodAccessException: Attempt by security transparent method 'DynamicClass.Max(Int32, Int32)'
to access security critical method 'xxx.GetReplacement()' failed.
根据我的阅读,我的动态方法(上述错误中的 Max)是安全透明的,因为它附加到的程序集(AssemblyBuilder)是透明的。我猜 AssemblyBuilder 是透明的,因为它是一个动态程序集。
如何使我的动态方法变得至关重要,或者尽一切可能授予它调用 GetReplacement 的权限?我想在 GetReplacement 的程序集中调用其他几个方法,因此修复动态方法比以某种方式标记 GetReplacement 更好。
我有点迷路,希望得到一些帮助!