Type
でTypeBuilder
をC#リフレクションから新しく生成しています。今私が持っている問題は、staticメソッドでメソッドを呼び出すメソッド本体を構築する方法です。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#で記述し、ILがildasm.exeで生成するものを見てください。今は簡単です。 –