Вы можете использовать Type.GetGenericArguments , чтобы вернуть тип T в List<T>
.
Например, это вернет тип для любого List<T>
, переданного в качестве аргумента:
Type GetListType(object list)
{
Type type = list.GetType();
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
return type.GetGenericArguments()[0];
else
throw new ArgumentException("list is not a List<T>", "list");
}