gpt4 book ai didi

c# - 寻找一种在运行时操作 .Net CIL 的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:06 25 4
gpt4 key购买 nike

在 Java 中,我们使用 javaagent 参数和 ASM (http://asm.ow2.org/) 实用程序在运行/加载时通过类加载器修改内存中的字节码。 (又名动态地向类中的方法添加方法调用)。

这方面的一个例子是您删除对 Log4j 的所有调用以加速应用程序 (http://surguy.net/articles/removing-log-messages.xml)。

我正在尝试弄清楚如何使用 C#/.Net 在运行时执行相同的过程。我已经看到您可以为 .Net 操作 CIL,但我还没有在运行时找到这样的示例。

System.Reflection.Emit 似乎是最接近的 .Net 等价物,您可以在其中动态创建类,但是有没有办法使用它添加或覆盖现有类?

最佳答案

我从来没有用过Mono.Cecil用于生成动态代码(如果您想检测程序集,它确实会让您的生活变得更加轻松)。

在 .Net 中,如果你想生成代码,你可以使用 System.CodeDomSystem.Reflection.Emit .一个使您能够动态注入(inject)方法的特别有用的类是 DynamicMethod .

关于c# - 寻找一种在运行时操作 .Net CIL 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com