如何在一个DLL中replace一个类?

这个问题很含糊,因为我不确定我想做什么是正确的术语。

我已经下载了一个dll (我没有源代码),并使用reflection工具,我发现在dll实现中的错误。 该错误很容易修复。 所以让我们说这个错误在这里:

 class A { void f() { // BUG!!! } } 

有什么办法来实现我自己的A将修复错误,并在运行时注入它来取代其他A实例?

如果您使用.NET 4.0。 或更高,请看一下: MethodRental.SwapMethodBody方法

其他方式: CLR注入:运行时方法替代品

最简单的方法就是从这个类inheritance并编写你自己的实现。

  class ParentClass { public void SomeMethod() { //bug here } } class Child:ParentClass { new public void SomeMethod() { // I fixed it } } 

在这之后,用你的课。

 Child child = new Child(); child.SomeMethod();