在C#中实现多个接口

时间:2013-09-30 00:20:56

标签: c#

在我的程序中,我定义了几个接口,如IInterface1,IInterface2,IInterface3,IInterface4,IInterface5,如果我需要在具体类中实现所有五个接口,你是否直接实现这些接口,如下所示

public class EntityClass: IInterface1,IInterface2, *** IInterface5
{
}

或者你会先创建一个继承这些接口的接口,然后实现该接口吗?

public interface IEntity: IInterface1,IInterface2, *** IInterface5
{
}

public class EntityClass:IEntity
{
}

3 个答案:

答案 0 :(得分:4)

接口的继承表示“is-a”关系。如果IEntity的每个实现也必须是IInterface1,您将从IInterface1继承IEntity。

是:公共接口IPanda:IBear

可能不是:公共接口IAccountant:IObsessiveCompulsiveDisorder

答案 1 :(得分:2)

这取决于您的使用案例。

如果你的IEntity总是包含其他接口,那么实现其他接口要容易得多。

如果不是这种情况,你将不得不以一种没有类必须实现它不需要的方法的方式来抽象它,同时还需要尽可能少的工具。

话虽如此:如果你只将它用于一个或两个类,你也可以使用接口列表而不是在中间接口中对它们进行分组。

答案 2 :(得分:1)

这两种方法在良好实践的背景下都是有效的。但是,这完全取决于您的设计。我发现接近继承的最好方法是尝试回顾你继承的内容并确保它有意义。

例如,“每个EntityClass都是IEntity吗?”,这可能是真的。但是,问“每个EnetityClass是一个Interface1,还有一个接口2等”,对于某些情况可能是真的,而不是其他情况,但都是在IEntity上实现的。

将许多接口实现聚合到一个接口中的问题可能是当您在接口上实现更多类时,其中有许多接口本身就是当实现只需要几个接口时,在这种情况下您需要重新工作你的设计确保继承树有意义。