If you mean the collection, then just as:
var asEnumerable = i as IEnumerable<int>;
if(asEnumerable != null) { ... }
However, I’m assuming (from the example) that you have a Type:
The object will never be “of” type IEnumerable<int> – but it might implement it; I would expect that:
if(typeof(IEnumerable<int>).IsAssignableFrom(type)) {...}
would do. If you don’t know the T (int in the above), then check all the implemented interfaces:
static Type GetEnumerableType(Type type) {
if (type.IsInterface && type.GetGenericTypeDefinition() == typeof(IEnumerable<>))
return type.GetGenericArguments()[0];
foreach (Type intType in type.GetInterfaces()) {
if (intType.IsGenericType
&& intType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) {
return intType.GetGenericArguments()[0];
}
}
return null;
}
and call:
Type t = GetEnumerableType(type);
if this is null, it isn’t IEnumerable<T> for any T – otherwise check t.