Como posso ver se GenericTypeDefinition implementa IEnumerable <>
Eu tenho um método que verifica se um tipo é genérico e, em seguida, verifica se o GenericTypeDefinition é deIEnumerable<>
.
static Type GetEnumerableType(Type type)
{
if(type.IsGenericType) {
var genericTypeDefinition = type.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(IEnumerable<>)) {
return type.GetGenericArguments()[0];
}
}
return null;
}
Funciona como um encanto se for um IEnumerable. Se a definição GenericTypeDefinition forIList<>
ouList<>
isso não funciona. Eu tentei..
typeof(IEnumerable<>).IsAssignableFrom(genericTypeDefinition)
..sem sucesso. Claro que deve haver uma maneira melhor do que encadear outras declarações?