如何替换dll中的类?

时间:2014-02-25 12:38:24

标签: c# dll

这个主题很模糊,因为我不确定我正在尝试做什么的正确术语。

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

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

有没有办法实现我自己的A来修复bug并在运行时将其注入以替换其他A个实例?

2 个答案:

答案 0 :(得分:72)

如果您使用的是.NET 4.0。或更高,请查看: MethodRental.SwapMethodBody Method

其他方式:CLR Injection: Runtime Method Replacer

答案 1 :(得分:7)

最简单的方法是从该类继承并编写自己的实现。

  class ParentClass
            {
                public void SomeMethod() { 
                   //bug here 
                }
            }

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

此后,请使用您的课程。

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