使用反射在DLL中覆盖方法

And*_*rew 8 c# reflection dll

我甚至不确定这是否可能,如果不是,那么道歉.我搜索广泛,没有找到我要找的东西.

基本上我们有一个由第三方制作的应用程序,完全生硬的是垃圾.我们有一个特定的问题,并设法使用ILSpy跟踪DLL中的方法的问题.显然,我们没有(也无法获得)源代码,并且有问题的公司不愿意在任何合理的时间范围内解决问题.

所以,我们已经调查了各种调查途径并且没有提出任何建议.我一直在研究是否可以使用反射完成这一点,这几乎是我们让这个工作的最后希望.简而言之,我想做的是以下内容:

  • 创建一个与现有DLL同名的简单类库
  • 使用反射从现有DLL导入方法
  • 以某种方式用我自己的正确代码覆盖有问题的方法
  • 重建代码,所以我有一个新的DLL,包含现有DLL的99%的功能,但我的覆盖代码提供了正确的功能.

我在调查过程中发现了TypeBuilder.DefineMethodOverride以及StackOverflow中的一个页面,它看起来很相似,但并不是我想要的.

http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder.definemethodoverride.aspx

有没有办法用反射"覆盖"方法?

任何建议赞赏!

安德鲁

编辑

我有另一个可能的想法是生成一个包含覆盖函数的分部类,但这似乎也不可行.

Mar*_*icz 6

只有当它是虚拟方法时,才能覆盖该方法,无论是通过反射还是静态方式进行操作都无关紧要.我建议使用反编译器(有很多免费的可用)并在MSIL中修复代码.然后,您可以从MSIL生成新的程序集.