If you need to find out what kind of object is the "Item" in a generic collection (e.g. System.Collections.Generic.List<Monkey> would give "Monkey")
Code:
/// <summary>
/// Gets the item type used in any type-safe generic list
/// or generic list derived class...
/// </summary>
/// <param name="genericType">
/// The collection type
/// </param>
/// <returns></returns>
public static Type GetItemTypeFromGenericType(Type genericType)
{
if (genericType.IsGenericType)
{
Type[] genericTypes = genericType.GetGenericArguments();
if (genericTypes.GetUpperBound(0) >= 0)
{
return genericTypes[genericTypes.GetUpperBound(0)];
}
else
{
return null;
}
}
else
{
if (genericType.BaseType != null)
{
return GetItemTypeFromGenericType(genericType.BaseType);
}
else
{
return null;
}
}
}