直接插入字节码

时间:2009-10-26 07:38:58

标签: c# .net reflection

有没有办法将字节码直接动态插入到我的C#可执行文件中?我正在寻找类似于C ++中asm关键字的功能。显然我知道我不能插入x86汇编指令。我只能插入IL字节码。

2 个答案:

答案 0 :(得分:5)

是的,您可以使用基本上完成此操作的DynamicMethod(您可以使用Delegate来调用使用动态方法生成的代码)。

事实上,几个框架部分似乎都在使用它们,包括已编译的XSL转换,已编译的正则表达式等。它们运行良好且性能非常高(在创建/编译它们的初始开销之后)。

答案 1 :(得分:1)

你可以使用 Reflection.Emit directy - 你必须创建一个Assembly / Module / Class / Method并在方法体上插入IL。

-

使用.Net 2.0,您可以使用可以在委托中编译的 DynamicMethod ,因此您无需动态创建程序集/模块/类。

-

使用.Net 3.0,您可以使用 ExpressionTrees 动态生成代码并附加到委托。

-

希望这有帮助。

Ricardo Lacerda Castelo Branco