题
我不明白为什么IList
实现IEnumerable
考虑ICollection
实现<=>来实现<=>。
解决方案
我假设你想知道为什么它声明它实现ICollection
以及IEnumerable
,当第一个暗示第二个时。我怀疑主要原因是清晰度:这意味着人们不需要回头看<=>检查那已经延伸<=>。
如果您想重新实现之前在基类中明确实现的接口方法,还有其他时候需要重新声明接口实现 - 但我认为这不是这种情况的原因。 / p>
编辑:我一直在假设构建文档的源代码具有包含两个接口的声明。另一种可能的替代方案是,层次结构中的所有接口都由doc生成器自动引入。在这种情况下,问题变为<!>“;为什么doc生成器会执行<!>”; - 答案几乎肯定是<!>清晰<!>;
其他提示
IList
只能通过associaton实现IEnumerable
;即它实现ICollection
精确,因为它继承List
,即Enumerable
。您将获得与类型层次结构相同的内容(尽管只有单个继承:
class Enumerable {}
class Collection : Enumerable {}
class List : Collection {}
所以IC : IA, IB
是<=>;以同样的方式,<=>是<=>。
例如,如果我写:
interface IA {}
interface IB : IA { }
interface IC : IB { }
查看元数据,然后看来<=> - 但这只是间接的;这是IL:
.class private interface abstract auto ansi IA
{
}
.class private interface abstract auto ansi IB
implements IA
{
}
.class private interface abstract auto ansi IC
implements IB, IA
{
}
如果要在ReSharper中打开代码,则表明IEnumerable
上的IList
接口声明不是必需的,因为它已经通过ICollection
指定。
不隶属于 StackOverflow