我知道我们可以在运行时使用 TypeBuilder 类定义类型、方法、属性和构造函数。
现在我想知道是否可以在运行时编辑函数 CIL(MSIL) 代码流。(或者至少将另一个函数设置为 set 访问器)
为了测试,我创建了一个 Dummy 类,如下所示:
public class DummyClass
{
public long prop1 { get; set; }
public SampleClass()
{
}
}
我想编辑它的 set 函数以始终设置 value -1
。我取得的最好成绩是访问 setter CIL(MSIL) 指令,如下所示:
var ILInstructionAsByteArray = typeof(DummyClass).GetProperties()[0].GetSetMethod().GetMethodBody().GetILAsByteArray()
甚至有可能吗?
是的。
使用这篇文章https://www.codeproject.com/Articles/463508/NET-CLR-Injection-Modify-IL-Code-during-Run-time我已经能够在运行时编辑 MSIL。我不会向任何有其他解决方案的人推荐它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句