我什至不确定这是否可能,如果没有,我深表歉意。我用谷歌搜索了很多,没有找到我要找的东西。
基本上,我们有一个由第三方制作的应用程序,说白了就是垃圾。我们有一个特定的问题,并且已经设法使用 ILSpy 将问题追溯到 DLL 中的一个方法。显然,我们没有(也无法获得)源代码,而相关公司也不愿意在任何合理的时间范围内解决问题。
因此,我们调查了各种调查途径,但一无所获。我一直在研究这是否可以使用反射来完成,这几乎是我们让它发挥作用的最后希望。简而言之,我想做的是以下几点:
- 创建一个与现有 DLL 同名的简单类库
- 使用反射从现有的 DLL 中导入方法
- 不知何故,用我自己的正确代码覆盖了有问题的方法
- 重建代码,所以我有一个新的 DLL,它包含现有 DLL 的 99% 的功能,但我的覆盖代码提供了正确的功能。
我在调查期间发现了 TypeBuilder.DefineMethodOverride 以及 StackOverflow 的一个页面,它看起来很相似,但并不完全符合我的要求。
http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder.definemethodoverride.aspx
任何建议表示赞赏!
安德鲁
编辑
我的另一个可能的想法是生成一个包含覆盖函数的部分类,但这似乎也不可行。