在 C# 中实现多个接口

本文关键字:接口 实现 | 更新日期: 2023-09-27 18:33:12

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

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

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

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

在 C# 中实现多个接口

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

是:公共接口 IPanda : IBear

可能不是:公共接口 IAccountant : IObsessive强迫症

这取决于您的用例。

如果您的IEntity始终包含其他接口,那么使其实现其他接口会容易得多。

如果不是这种情况,则必须以一种没有类必须实现它不需要的方法的方式抽象它,同时也需要尽可能少的实现。

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

这两种方法在良好做法的背景下都是有效的。但是,这完全取决于您的设计。我发现处理继承的最好方法是尝试回话你继承的东西,并确保它是有意义的。

例如,"每个实体类都是IEntity吗?",这可能是真的。但是,询问"每个EnetityClass都是接口1,接口2等吗",对于某些实例可能是正确的,而对于其他实例则不然,但所有这些都是在IEntity上实现的。

将许多接口实现

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