gpt4 book ai didi

c# - 使用反射覆盖 DLL 中的方法

转载 作者:太空狗 更新时间:2023-10-29 19:39:27 24 4
gpt4 key购买 nike

我什至不确定这是否可能,如果不能,我深表歉意。我在 Google 上进行了大量搜索,但没有找到我要找的东西。

基本上,我们有一个由第三方制作的应用程序,直言不讳地说,这是垃圾。我们遇到了一个特殊问题,并设法使用 ILSpy 将问题追踪到 DLL 中的一个方法。显然,我们没有(也无法获得)源代码,而且相关公司也不愿意在任何合理的时间范围内解决问题。

因此,我们调查了各种调查途径,但一无所获。我一直在研究是否可以使用反射来完成这件事,这几乎是我们让它发挥作用的最后希望。简而言之,我想做的是:

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

我在调查 TypeBuilder.DefineMethodOverride 和 StackOverflow 的一个页面时发现,这看起来很相似,但并不完全是我要找的。

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

Is there a way to "override" a method with reflection?

感谢任何建议!

安德鲁

编辑

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

最佳答案

只有当它是虚拟的时候你才可以覆盖这个方法,无论你是通过反射还是静态的来做都没有关系。我建议使用反编译器(有很多免费的)并修复 MSIL 中的代码。然后您可以从 MSIL 生成新程序集。

关于c# - 使用反射覆盖 DLL 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com