有人可以向我解釋什麼需要在通過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被推入堆棧?
你能提供周圍的IL嗎? –