2010-06-09 54 views

回答

1

我不认为你可以做到这一点。但是您可以使用Reflection.Emit在新内存程序集中生成新类。

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

3

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

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

+0

我宁可不使用第三方库 – 2010-06-09 17:45:50

+4

好的,然后放弃,或从头开始重写Mono Cecil。没有替代。 – SLaks 2010-06-09 17:59:16