如何修改给定程序集中的内存加载方法,以便clr在为某个类实例化新对象时,会在其中创建带有修改代码的新对象?
答案 0 :(得分:3)
您可以在加载程序集之前使用Mono Cecil修改程序集。
您可以将修改后的程序集保存到字节数组,然后调用Assembly.Load
加载字节数组。
答案 1 :(得分:1)
我认为你不能那样做。但是您可以使用Reflection.Emit在新的内存中程序集中生成新类。
虽然这是很多工作。您可以从Castle DynamicProxy等框架获得帮助,该框架允许您在运行时为类生成代理。这样,您可以在原始方法运行之前或之后运行任何代码,或者通过不调用原始方法来完全更改方法。