我可以避免引用现有引用从中继承的程序集吗

本文关键字:引用 继承 程序集 可以避免 | 更新日期: 2023-09-27 18:24:59

我有一个包含业务对象的基对象的程序集,然后是另一个程序集,该程序集自动生成并填充基于数据库架构的类。后一个程序集中的类都继承自前一个程序中的类。

我的想法是,我可以从其他项目中引用生成的程序集,而不是"引用"带有基本对象的程序集——从而隐藏了一些实现细节,并禁止人们使用这些对象。

不幸的是,我意识到,除非我也引用它,否则我无法使用任何内置在基础中的功能。所以我的问题是:这周围有什么吗?如果没有,那么我应该使用一种设计模式来解决这个问题吗?

我可以避免引用现有引用从中继承的程序集吗

这个问题听起来有点倒退。您正在用数据层隐藏您的业务/域层?一般来说,情况会相反。

不管怎样。这个问题听起来像你有:

  1. 组件A

    class Bar
    
  2. 组件B

    class Foo : Bar
    

程序集C必须同时引用A和B才能使用Foo

要遵循的设计原则是支持组合而不是继承

Foo可以包含Bar的一个实例,并公开哪些方法对Foo有意义,而不是从Bar继承Foo。这一切都是假设Foo实际上并不是Bar的一个专门版本。

如果您真的不想将基类公开给其他人(考虑可扩展性),那么您可能应该将基类移动到与混凝土相同的程序集中。

如果仍然需要分离程序集,则仍然可以使基类成为内部的,然后在基类程序集上设置InternalVisiblesToAttribute:

(在AssemblyInfo.cs中)

using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo("ConcreteClassAssembly")]