Как узнать, реализует ли GenericTypeDefinition IEnumerable <>
У меня есть метод, который проверяет, является ли тип универсальным, а затем проверяет, имеет ли GenericTypeDefinitionIEnumerable<>
.
static Type GetEnumerableType(Type type)
{
if(type.IsGenericType) {
var genericTypeDefinition = type.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(IEnumerable<>)) {
return type.GetGenericArguments()[0];
}
}
return null;
}
Работает как шарм, если это IEnumerable. Если GenericTypeDefinition являетсяIList<>
или жеList<>
это не работает Я пробовал..
typeof(IEnumerable<>).IsAssignableFrom(genericTypeDefinition)
..безуспешно. Конечно, должен быть лучший способ, чем цепочка операторов else?