【发布时间】:2013-06-29 04:53:11
【问题描述】:
如何使用 C#/.NET 动态修改内存中的 MSIL 代码?
是的,我真的很想替换现有的代码,这些代码已经在内存中。
具体来说,我不是:
- 只希望生成新代码(通过表达式模板、ILGenerator 等)
- 尝试发出一个新的二进制模块,以期稍后将其加载到内存中
【问题讨论】:
-
据我所知,.net IL 不支持此功能。为什么需要这种特定场景?
-
你为什么需要这个?
-
@newStackExchangeInstance:我无法真正讨论我正在从事的项目,我只能说拥有这种能力会有很大帮助。
-
@sheldo 鉴于 Mehrdad 正在谈论虚拟机运行时,其前提是易于修改的 IL 与 .NET 领域有关,这绝对是可能的。此外,使用
unsafe和/或 Marshalled 调用,几乎没有什么是做不到的。
标签: c# code-generation reflection.emit ilgenerator