C# 使用DynamicMethod生成运行时方法

C# 使用DynamicMethod生成运行时方法,c#,asp.net-core,runtime,dynamicmethod,C#,Asp.net Core,Runtime,Dynamicmethod,我有一个HelloWorld方法,其中包含一些逻辑。我必须生成许多具有不同名称的方法,这些方法与HelloWorld具有相同的逻辑实现。如果HelloWorld方法没有任何参数,那么很容易做到。当我必须使用DynamicMethod将一些参数传递给HelloWorld时,问题就开始了。这里有一段代码帮助您理解 public string HelloWorld(string Greeting) { return Greeting; } public void MethodGenerato

我有一个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);
} 
公共字符串HelloWorld(字符串问候语)
{
回敬问候;
}
公共void MethodGenerator()
{
MethodInfo HelloWorldMethod=typeof(MyClass).GetMethod(“HelloWorld”);
DynamicMethod DM=newdynamicmethod(“HelloWorld”,typeof(string),newtype[]{typeof(MyClass)});
ILGenerator IL=DM.GetILGenerator();
IL.Emit(操作码.Ldarg_0);
IL.Emit(操作码.Call,HelloWorldMethod);
发射(操作码Ret);
Func-DMDelegate=(Func)DM.CreateDelegate(typeof(Func));
字符串结果=DMDelegate(MyObject);
} 
请帮我修改我的案例代码。提前谢谢

顺便说一句,我已经在谷歌上搜索过了,没有找到任何与我的案子有关的东西。以下是我使用的一些谷歌搜索结果


我不明白这个问题。您遇到了什么问题?当HelloWorld方法没有获得任何参数时,此代码工作正常,当我尝试使用dynamicmethod传递调用HelloWorld的参数时,它不工作。我不知道在运行时方法生成期间如何将参数传递给方法。我不理解这个问题。您遇到了什么问题?当HelloWorld方法没有获得任何参数时,此代码工作正常,当我尝试使用dynamicmethod传递调用HelloWorld的参数时,它不工作。我不知道在运行时方法生成期间如何将参数传递给方法。