BCL类型,实现相同泛型类型的两个实例

时间:2014-03-14 21:37:29

标签: .net generics msdn base-class-library

.NET框架中的任何类或MSDN库中记录的任何其他类是否明确实现了同一通用接口的两个实例?

例如,以下类显式实现了IEnumerable<int>IEnumerable<string>

public class T : IEnumerable<int>, IEnumerable<string>
{
    IEnumerator<string> IEnumerable<string>.GetEnumerator()
    {
        throw new NotImplementedException();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        throw new NotImplementedException();
    }

    IEnumerator<int> IEnumerable<int>.GetEnumerator()
    {
        throw new NotImplementedException();
    }
}

对于任何想知道的人,我正致力于解决Sandcastle帮助文件生成器无法解析继承的显式实现的接口方法的MSDN文档URL的问题。例如,扩展Dictionary<TKey, TValue>的类继承ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue>)的显式实现。使用MTPS查找此方法时,contentIdentifier如下:

  

由assetid:M:System.Collections.Generic.Dictionary`2.System#类别#通用#ICollection的{的Ť}#包含(System.Collections.Generic.KeyValuePair {`0`1 })

如果你在那里注意到粗体 T ,你会发现这种语法无法区分我上面提到的具体情况。通过在框架中查找现有类,我可以使用MTPS服务来检查在这种特定类型的冲突情况下使用的内容标识符,从而允许我确保这种确实罕见但理论上可能的边缘情况的正确行为。

1 个答案:

答案 0 :(得分:3)