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?

questionAnswers(2)

yourAnswerToTheQuestion