有人可以向我解释在通过reflection.emit进行函数调用之前需要将什么加载到堆栈中吗?
我有一个非常简单的方法
public static void Execute(string 1, string 2)
我想在下面的类中动态生成方法(忘了剩下的,我把它们整理好了)
public class Test{
public string s1;
public void Run(string s2)
{
MyOtherClass.Execute(s2,s1)
}
}
我有一份上述测试的副本供参考,我注意到在“调用”之前发出了以下操作码。
- ldarg_1
- ldarg_0
- ldfld
问题是 ldarg_0 在那里做什么?我只需要 2 个调用参数,为什么 CLR 需要将 ldarg_0 推入堆栈?