我有一个设计问题。 我将提出一个假设情况。 我的应用程序需要几个接口(interface)来使对象可用。假设他们是;
1. IAdult.cs, with two properties
a. Age
b. LicenceNo.
2. IEducated.cs, with two methods
a. Read()
b. Write()
让我们假设这些接口(interface)的实现在大多数时候应该保持不变。所以,如果我们必须从这些接口(interface)中实现一个抽象类,我们可以简单地创建一个类,比如 abstract class EducatedAdult { }。 现在我们定义三个不同的类及其各自的继承和一组各自的属性;
1. Carpenter.cs (derives from class A)
2. Plumber.cs (derives from class B)
3. Programmer.cs (derives from class C)
这里,类 A、B、C 是一些我无法编辑的外部库的一部分。现在要使这些对象在程序中可用,它们需要实现上述给定的接口(interface)。所以问题是对于这些类中的每一个,我都必须显式地实现上述接口(interface)。有没有更好的设计,我不必在所有类中冗余地实现接口(interface)。如果可能的话,这可能是一个解决方案;
类 EducatedAdult<t>: t, IAdult, IEducated { <implementation of interfaces> }
稍后,也许我可以像这样初始化我的派生类;
Carpenter carpenter = new EducatedAdult<Carpenter>()
.这并不是一个理想的解决方案,因为 carpenter 对象的公共(public)接口(interface)仍然不包括我的接口(interface)成员(不需要转换)。但是,什么才是最合适的设计呢?
最佳答案
您不能真正为 .NET 中的接口(interface)提供默认实现,它只能由实现类来提供实现,但您可以使用接口(interface)上的扩展方法伪造它。
关于c# - 如何避免冗余的接口(interface)实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829439/