Если вам нужен быстрый тест для определенных закрытых универсальных типов - например, чтобы проверить, реализует ли List<string>
IEnumerable<string>
- тогда вы можете сделать что-то вроде этого:
Type test = typeof(List<string>);
bool isEnumerable = typeof(IEnumerable<string>).IsAssignableFrom(test);
Если вам нужно более универсальное решение, которое работает для любого IEnumerable<T>
, вам нужно будет использовать что-то вроде этого:
Type test = typeof(List<string>);
bool isEnumerable = test.GetInterfaces().Any(i =>
i.IsGenericType && (i.GetGenericTypeDefinition() == typeof(IEnumerable<>)));