I need to validate an object to see whether it is null, a value type, or IEnumerable
where T
is a value type. So far I have:
(edit - added value type bits)
You need to check all the interfaces it implements (note it could in theory implement IEnumerable
for multiple T
):
foreach (Type interfaceType in obj.GetType().GetInterfaces())
{
if (interfaceType.IsGenericType
&& interfaceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
{
Type itemType = interfaceType.GetGenericArguments()[0];
if(!itemType.IsValueType) continue;
Console.WriteLine("IEnumerable-of-" + itemType.FullName);
}
}