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

标签 c# java .net asp.net c#-4.0

在 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/

相关文章:

Java - ArrayList 不为其实例字段 "elementData "使用正式类型参数

c# - 我可以定义一个方法来接受 Func<T> 或 Expression<Func<T>> 吗?

c# - 使用 CSharpCodeProvider 进行缓慢的动态编译

C# - 在 block 末尾自动释放内存

c# - 我们的 SQL 或 Entity Framework 中存在错误?

Java套接字通信——传输加密数据

java - ArrayList 给出空指针异常

.net - react 性扩展(Rx)会取代任务并行库吗?

C#并排合并两个或多个文本文件

c# - Semaphoreslim.Wait(0)(以防止多次执行)导致不执行的可能性