我可以使用反射來檢查方法中的代碼嗎?我正在玩C#反射API。我可以輕松地Type在程序集中加載類,方法等信息,但是,現(xiàn)在我想知道如何加載和讀取方法中的代碼?
3 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個贊
基本答案:
你不能用反射API(System.Reflection)。
原因是反射api被設(shè)計(jì)用于元數(shù)據(jù)(類的類型,名稱和方法的簽名,......),但不在數(shù)據(jù)級別(這將是IL流本身)上。
擴(kuò)展答案:
您可以使用System.Reflection.Emit(例如ILGenerator Class)發(fā)出(但不讀取)IL。
通過MethodInfo.GetMethodBody()
您可以獲得用于實(shí)現(xiàn)方法的二進(jìn)制IL流。但那通常完全沒用。
您可以使用外部庫(如Cecil)來讀取/修改/添加/刪除方法中的代碼。
- 3 回答
- 0 關(guān)注
- 455 瀏覽
添加回答
舉報
0/150
提交
取消