Если вы имеете в виду коллекцию , то просто as
:
var asEnumerable = i as IEnumerable<int>;
if(asEnumerable != null) { ... }
Однако я предполагаю (из примера), что у вас есть Type
:
Объект никогда не будет "типа" IEnumerable<int>
- но он может реализовать его; Я ожидаю, что:
if(typeof(IEnumerable<int>).IsAssignableFrom(type)) {...}
будет делать. Если вы не знаете T
(int
в приведенном выше), то проверьте все реализованные интерфейсы:
static Type GetEnumerableType(Type type) {
foreach (Type intType in type.GetInterfaces()) {
if (intType.IsGenericType
&& intType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) {
return intType.GetGenericArguments()[0];
}
}
return null;
}
и звоните:
Type t = GetEnumerableType(type);
если это ноль, для любого T
это не IEnumerable<T>
- в противном случае отметьте t
.