【问题标题】:How to inherit a class from an assembly without forcing users to reference two assemblies如何从程序集中继承类而不强制用户引用两个程序集
【发布时间】:2010-10-02 05:02:41
【问题描述】:

我在两个不同的 .NET 程序集中有两个类 A 和 B:AssemblyA 和 AssemblyB。

我希望 B 类继承 A 类,但我希望它使用 B 类只需要引用 AssemblyB(而不是 AssemblyA 和 AssemblyB)。

由于项目限制,我需要将两个程序集分开,所以我不能使用合并工具来合并这两个程序集。

请注意,类的实际继承不是必须的 - 我希望能够让来自 A 的逻辑作为类 B 的一部分在 AssemblyB 中运行,并且尽可能少地重写功能。

有没有办法做到这一点?

【问题讨论】:

    标签: .net inheritance assemblies


    【解决方案1】:

    没有。以这种方式思考 - 假设您输入以下内容:

    public class B : A
    {
          public void Foo()
          {
                this.// Cursor is here
          }
    }
    

    如果 Intellisense 不知道 A 类中的内容,您如何期望它知道可用的内容?编译器如何能够验证方法调用等?

    必须了解继承链的所有父类。这意味着引用这两个项目。如果您不想这样做,请不要使用继承 - 让 B 组成 A 而不是从它派生。用户在执行时仍需要 A 的二进制文件,但我不认为他们需要在 Visual Studio 中添加引用。 (另一方面,如果他们要调试代码,他们可能无论如何都想确保二进制文件在正确的位置......)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多