1

我有一个带有一些逻辑的 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);
} 

请帮我根据我的情况修改此代码。提前致谢。

PS我已经用谷歌搜索过了,没有找到任何适合我的案例。这是我使用的一些谷歌搜索结果

使用的代码示例

另一个例子

4

0 回答 0