我正在通過來自C#反射的TypeBuilder
生成新的Type
。我現在所面臨的問題是如何構建方法體來調用靜態字段上的方法。在C#反射中使用IL生成器在靜態字段上調用方法
現在我的生成(在運行時)類看起來是這樣的:
public class Generated
{
static private MyObject obj;
public MyResponse Hello(MyRequest req1)
{
return obj.Hello(req1); // this part need to be grnerated
}
}
所以像這樣,現在我生成方法:
MethodBuilder mb = tb.DefineMethod(
methodInfo.Name,
MethodAttributes.Public | MethodAttributes.Final,
CallingConventions.HasThis | CallingConventions.ExplicitThis,
methodInfo.ReturnType,
arguments);
ILGenerator il = mb.GetILGenerator();
il.Emit(OpCodes.Ldnull); // right now I'm just simply returning null
il.Emit(OpCodes.Ret);
所以,請告訴我,我怎麼可以加載在Il發生器堆棧中的靜態字段,然後在其上調用某種方法。
首先在C#中編寫代碼,並查看它通過ildasm.exe生成的IL。現在很簡單。 –