使用DynamicMethod生成运行时方法

时间:2017-09-14 15:59:03

标签: c# asp.net-core runtime dynamicmethod

我有一个HelloWorld方法,里面有一些逻辑。我必须生成许多具有不同名称的方法,这些方法具有与HelloWorld相同的逻辑实现。如果HelloWorld方法没有任何参数,那么很容易做到。当我必须使用DynamicMethod将一些参数传递给HelloWorld时,问题就开始了。这里有一些代码可以帮助您理解。

public string HelloWorld(string Greeting)
{
    return Greeting;
}

public void MethodGenerator()
{
   MethodInfo HelloWorldMethod = typeof(MyClass).GetMethod("HelloWorld");
   DynamicMethod DM = new DynamicMethod("HelloWorld", typeof(string), new Type[] { typeof(MyClass) });
   ILGenerator IL = DM.GetILGenerator();
   IL.Emit(OpCodes.Ldarg_0);
   IL.Emit(OpCodes.Call, HelloWorldMethod);
   IL.Emit(OpCodes.Ret);
   Func<MyClass, string> DMDelegate = (Func<MyClass, string>)DM.CreateDelegate(typeof(Func<MyClass, string>));
   string Result = DMDelegate(MyObject);
} 

请帮我修改我的案例代码。提前致谢。

P.S。我已经用谷歌搜索了,并没有为我的案子找到任何东西。以下是我使用的一些谷歌搜索结果

Used Code example

Another example

0 个答案:

没有答案