我正在查看为IDictionary<TKey, TValue>
界面生成的元数据,我注意到它实现了
public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
这不是多余的吗?查看ICollection<T>
的元数据,表明它已经实现了IEnumerable<T>, IEnumerable
为什么IEnumerable<T>
展示IEnumerable
,而ICollection<T>
没有实现ICollection
?
答案 0 :(得分:4)
元数据显示所有已实现的接口,尤其是通过继承获得的接口。如果您查看IDictionary<TKey, TValue>
的{{3}},您会发现实际的实现只实现了ICollection<KeyValuePair<TKey, TValue>>
:
public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>
答案 1 :(得分:0)
阅读this。它解释了您想要了解的关于第一个问题的所有信息。
我引用最相关的部分:
为什么像Reflector或对象浏览器这样的工具会显示整个列表?
这些工具没有源代码。他们只有元数据 从中工作。由于输入完整列表是可选的,因此该工具没有 了解原始源代码是否包含完整列表。 最好在更多信息方面犯错误。再次,该工具 正试图通过向您展示更多信息来帮助您而非 隐藏您可能需要的信息。