接口继承和子接口

Car*_*Liu 2 c# inheritance interface

接口 IA : 接口 IB { ... }

所以IB是IA的父接口,IA是IB的_____。空白处应该填什么?子接口?

Pav*_*aev 5

.NET接口之间没有继承关系。typeof(IB).BaseType如果您使用 Reflection- will be null,则这一点很明显IB

就我个人而言,我更喜欢将接口视为契约。在这种情况下,接口的“继承”实际上只是加强了契约 - 所以我会说“契约IB意味着IA”。埃里克·利珀特 (Eric Lippert)似乎也同意这一观点:

他认为扩展是关于实现的重用,而指定“基本”接口是说“任何满足此契约的对象也必须满足此其他接口”。

另外,“ IAextends IB”听起来可以理解,同时在技术上是正确的(如果我们谈论的是扩展合同),尽管可能有些误导,因为我们在“扩展”界面中收紧合同,而不是放松它。

另一种方法是遵循 C# 语言规范所使用的内容。其中有一个关于标题为“基本接口”的主题的部分,并以以下句子开头:

接口可以继承零个或多个接口类型,这些接口类型称为接口的显式基接口。

所以你有它。尽管应该注意的是,这是针对 C# 3.0 的;过去版本的规范实际上使用“扩展”而不是“继承”来描述相同的事物,因此仍然存在一些混淆的可能性。