如何发出调用动态方法的代码?

用户名

我正在尝试发出调用先前发出的动态方法的代码:

iLGenerator.Emit(OpCodes.Call, dynamicMethod.GetMethodInfo());

它通过一个异常来说明:“ MethodInfo必须是运行时MethodInfo对象”

有没有办法将动态方法转换为运行时方法?

迈克·兹伯雷

据我所知,您已经使用将编译DynamicMethodCreateDelegate但是,如果仅将DynamicMethod对象直接用作发射的参数,则它应该起作用。演示:

using System.Reflection;
using System.Reflection.Emit;

public class Program
{
    public static void Main(string[] args)
    {
        var dynMethod = new DynamicMethod("test1", typeof(void), Type.EmptyTypes);
        var gen = dynMethod.GetILGenerator();
        gen.EmitWriteLine("Test");
        gen.Emit(OpCodes.Ret);

        var dynMethod2 = new DynamicMethod("test2", typeof(void), Type.EmptyTypes);
        gen = dynMethod2.GetILGenerator();
        gen.Emit(OpCodes.Call, dynMethod);
        gen.Emit(OpCodes.Ret);
        var method2 = (Action)dynMethod2.CreateDelegate(typeof(Action));
        method2();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发出调用Apple方法的警告

来自分类Dev

indexedDB:发出调用事务功能的问题

来自分类Dev

为什么Int32.ToString()发出调用指令而不是callvirt?

来自分类Dev

如何从方法动态调用函数?

来自分类Dev

ostream:如何为此链接输出调用函数?

来自分类Dev

在通用IEnumerable上使用yield return时提早退出调用代码

来自分类Dev

如何为动态调用的方法包括@Autowired

来自分类Dev

如何从Libgdx动态调用覆盖暂停方法?

来自分类Dev

如何在python中动态调用方法?

来自分类Dev

如何从 JSCL 方法调用 Common Lisp 代码

来自分类Dev

如何从代码刷新 ngIf 方法调用

来自分类Dev

如何在javascript中使用先前函数的输出调用函数

来自分类Dev

从动态调用的类动态调用方法

来自分类Dev

动态调用异步方法

来自分类Dev

动态调用方法

来自分类Dev

动态类型的调用方法

来自分类Dev

如何使此代码动态

来自分类Dev

在继承的类中使用调用方法发出

来自分类Dev

如何动态调用Junits

来自分类Dev

如何动态调用函数?

来自分类Dev

如何动态调用范围

来自分类Dev

如何调用动态ID?

来自分类Dev

如何动态调用函数

来自分类Dev

递归JavaScript超出调用堆栈大小

来自分类Dev

用Python输出调用程序

来自分类Dev

groovysh 给出调用目标异常

来自分类Dev

如何从C代码发出R异常信号

来自分类Dev

如何在Python中动态创建方法(名称+代码)

来自分类Dev

如何用javapoet动态生成代码?更改方法参数