是否有简单的方法来反编译C#DLL(例如ILSpy),但是代替方法体,让方法返回默认值(或抛出运行时异常)?
为什么我需要这个?我试图替换.dll库中的一些类。我无法对整个库进行反编译,因为它包含许多lambda函数和迭代器,这些函数在反编译时会导致问题。
然而,我有成功的做法:复制我想要更改的类的反编译源,将其粘贴到一个新项目中,并将原始.dll包含为库。然后,将类更改为我喜欢的(暂时改变方法实现),然后编译项目并通过反汇编程序将编译的IL代码注入原始的.dll中。到目前为止,这已经取得了成功,但现在我遇到了一个问题。我现在尝试更改的课程(让我们说A
)将this
作为参数传递给其他课程(让我们说B
),并且它产生编译错误(因为原始的B
类需要原始的A
类,而不是"假的" A
类我正在编辑。
如果我有.dll库的完整源代码,这当然不会有问题,但我不知道。幸运的是,我不必这样做。如果我只有#34;结构"源代码(类,字段,方法,接口的声明,但没有,但没有方法实现),我可以将类A
的源复制粘贴到这个仅仅结构的代码中,进行我需要的更改,编译,然后像以前一样注入IL代码。
那么,我是否可以轻松获得仅仅结构化的代码(再次,方法实现可以更改默认值,或者抛出运行时异常),或者更好地替换.dll库中的类?