What would be the best way of getting the type of items a generic list contains? It\'s easy enough to grab the first item in the collection and call .GetType(), but I can\'
Here is a solution that also works with derived classes.
Because with this class :
public class SubList : List
{ }
If you call : subList.GetType().GetGenericArguments().Single()
It will throws a System.InvalidOperationException
With this method it works for derived classes :
public Type GetListItemType(List list)
{
Type type = list.GetType();
while (type != typeof(List))
type = type.BaseType;
return type.GetGenericArguments().Single();
}
var list = new List();
var subList = new SubList();
Console.WriteLine(GetListItemType(list)); // System.Int32
Console.WriteLine(GetListItemType(subList)); // System.Int32