我可以避免引用现有引用从中继承的程序集吗
本文关键字:引用 继承 程序集 可以避免 | 更新日期: 2023-09-27 18:24:59
我有一个包含业务对象的基对象的程序集,然后是另一个程序集,该程序集自动生成并填充基于数据库架构的类。后一个程序集中的类都继承自前一个程序中的类。
我的想法是,我可以从其他项目中引用生成的程序集,而不是"引用"带有基本对象的程序集——从而隐藏了一些实现细节,并禁止人们使用这些对象。
不幸的是,我意识到,除非我也引用它,否则我无法使用任何内置在基础中的功能。所以我的问题是:这周围有什么吗?如果没有,那么我应该使用一种设计模式来解决这个问题吗?
这个问题听起来有点倒退。您正在用数据层隐藏您的业务/域层?一般来说,情况会相反。
不管怎样。这个问题听起来像你有:
-
组件A
class Bar
-
组件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")]