Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言实现多个接口_C# - Fatal编程技术网

C# 用C语言实现多个接口

C# 用C语言实现多个接口,c#,C#,在我的程序中,我定义了两个接口,比如IIinterface1、IIinterface2、IIinterface3、IIinterface4、IIinterface5,如果我需要在一个具体的类中实现所有五个接口,您是否直接像下面那样实现这些接口 public class EntityClass: IInterface1,IInterface2, *** IInterface5 { } 或者您会先创建一个从这些接口继承的接口,然后实现该接口吗 public interface IEntity: I

在我的程序中,我定义了两个接口,比如IIinterface1、IIinterface2、IIinterface3、IIinterface4、IIinterface5,如果我需要在一个具体的类中实现所有五个接口,您是否直接像下面那样实现这些接口

public class EntityClass: IInterface1,IInterface2, *** IInterface5
{
}
或者您会先创建一个从这些接口继承的接口,然后实现该接口吗

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

public class EntityClass:IEntity
{
}

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

是:公共接口IPanda:IBear


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

这取决于您的用例

如果您的IEntity总是包含其他接口,那么让它实现其他接口就容易多了

如果不是这样的话,您将不得不以一种没有类必须实现它不需要的方法的方式对它进行抽象,同时还需要尽可能少的实现


这就是说:如果您只对一个或两个类使用此方法,那么您也可以使用接口列表,而不是将它们分组到中间接口中。

这两种方法在良好实践中都是有效的。但是,这完全取决于您的设计。我发现最好的继承方法是尝试和你的继承人交谈,并确保它是有意义的

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


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

我认为这两种方法都可以。不过,第二种方法更易于重用。例如,如果您需要在许多不同的类中实现IEntity,并让您的代码将IEntity视为单个概念单元,这取决于需要向消费者公开的内容。界面分离很好。。如果有一个伞形接口定义了它们的契约。。这也很好。强迫症的有趣之处:我妻子是一名注册会计师: