我有一个Type
{System.Collections.ObjectModel.ObservableCollection}
,它实现了以下接口
这是我检查类型是否实现IList
if (type.IsGenericType && type.GetInterfaces().Contains(typeof(IList<>)))
{
type = type.GetGenericArguments()[0];
enclosedType = EnclosedType.List;
}
为什么这不起作用? 我觉得我错过了一些明显的东西。
答案 0 :(得分:8)
如下所述。它实现了IList<TheType>
而不是IList
您需要检查接口的泛型类型定义。
示例:
type.GetInterfaces()
.Where(i => i.IsGenericType)
.Select(i => i.GetGenericTypeDefinition())
.Contains(typeof(IList<>));