Ich erstelle eine neue Type
über TypeBuilder
von C# Reflexion. Das Problem, das ich gerade habe, ist, wie man den Methodenkörper erstellt, um die Methode auf dem statischen Feld aufzurufen.Methode aufrufen auf statischem Feld mit IL-Generator in C# Reflexion
Gerade jetzt meine erzeugt (zur Laufzeit) Klasse sieht wie folgt aus:
public class Generated
{
static private MyObject obj;
public MyResponse Hello(MyRequest req1)
{
return obj.Hello(req1); // this part need to be grnerated
}
}
jetzt So wie dieses Ich-Erzeugungsverfahren:
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);
Also mir bitte sagen, wie kann ich laden statisches Feld auf dem Stapel im Il-Generator und rufen dann bestimmte Methoden darauf auf.
Schreiben Sie zuerst diesen Code in C# und sehen Sie sich an, was IL mit ildasm.exe generiert. Jetzt ist es einfach. –