在运行时修改程序集?

时间:2010-06-09 17:21:17

标签: .net clr

如何修改给定程序集中的内存加载方法,以便clr在为某个类实例化新对象时,会在其中创建带有修改代码的新对象?

2 个答案:

答案 0 :(得分:3)

您可以在加载程序集之前使用Mono Cecil修改程序集。

您可以将修改后的程序集保存到字节数组,然后调用Assembly.Load加载字节数组。

答案 1 :(得分:1)

我认为你不能那样做。但是您可以使用Reflection.Emit在新的内存中程序集中生成新类。

虽然这是很多工作。您可以从Castle DynamicProxy等框架获得帮助,该框架允许您在运行时为类生成代理。这样,您可以在原始方法运行之前或之后运行任何代码,或者通过不调用原始方法来完全更改方法。