Как узнать, реализует ли 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?

Ответы на вопрос(2)

Ваш ответ на вопрос