【问题标题】:Can I partially load an assembly and replace certain classes inside it?我可以部分加载程序集并替换其中的某些类吗?
【发布时间】:2015-09-22 17:55:56
【问题描述】:

我知道这是一个可怕的 hack。不过……

假设我有提供 SomeNamespace.CookSomeNamespace.Potato 类的程序集 A。 Cook 通常调用Potato,我知道每个方法等。我创建了程序集 B,它提供了一个 SomeNamespace.Potato 类,该类的行为与程序集 A 中的类不同,但可以以相同的方式调用。

我想将程序集 A 和 B 加载到我的程序中,但我想要来自 A 的 Cook 和来自 B 的 Potato。实际上,我正在修补 A 的 Potato。这个可以吗?

编辑:程序集 A 来自第三方,我无法控制它。

【问题讨论】:

  • C# inheritance 的可能重复项
  • @MatthewWhited 与程序集加载无关。我现在还澄清了我的问题,强调我不控制程序集 A。
  • 然后创建一个新程序集并从第一个程序集继承。您需要将要替换的函数标记为虚拟函数。

标签: .net


【解决方案1】:

除非相关程序集中的类已经构建为支持其他人替换要使用的特定类/对象,否则不,您不能这样做。

让我更具体一点。 .NET 中没有任何内置功能可以让您执行此操作。

您唯一的选择就是反编译程序集,更改代码,然后重新编译。这可能会也可能不会容易,甚至可能,这取决于它的程序员做了什么或想到了什么。

【讨论】:

    【解决方案2】:

    看起来this question本质上是我想做的,并且有一个解决方案(有限制)。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2011-10-19
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多