为什么ObservableCollection没有实现IList?

时间:2014-11-07 20:40:19

标签: c# observablecollection ilist

我有一个Type {System.Collections.ObjectModel.ObservableCollection},它实现了以下接口

enter image description here

这是我检查类型是否实现IList

的代码
if (type.IsGenericType && type.GetInterfaces().Contains(typeof(IList<>)))
{
    type = type.GetGenericArguments()[0];
    enclosedType = EnclosedType.List;
}

为什么这不起作用? 我觉得我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:8)

如下所述。它实现了IList<TheType>而不是IList 您需要检查接口的泛型类型定义。

示例:

type.GetInterfaces()
    .Where(i => i.IsGenericType)
    .Select(i => i.GetGenericTypeDefinition())
    .Contains(typeof(IList<>));