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