Kann mir jemand erklären, was vor einem Funktionsaufruf über reflection.emit in den Stack geladen werden muss?Reflection empty stack und Methodenaufruf
Ich habe eine sehr einfache Methode
public static void Execute(string 1, string 2)
ich die Methode in der folgenden Klasse generieren möchten dynamisch (den Rest vergessen, ich habe sie aussortiert)
public class Test{
public string s1;
public void Run(string s2)
{
MyOtherClass.Execute(s2,s1)
}
}
Ich habe eine Kopie der oben genannten Test, als Referenz, und ich bemerkte, dass die folgenden Opcodes vor dem "Anruf" emittiert wurden.
- ldarg_1
- ldarg_0
- ldfld
Die Frage ist, was ldarg_0 ist da? Ich brauche nur zwei Argumente für den Aufruf, warum benötigt die CLR ldarg_0, um auf den Stack geschoben zu werden?
Können Sie die umgebende IL bereitstellen? –