获取泛型 List 对象的 T 类型

本文关键字:对象 类型 获取 List 泛型 | 更新日期: 2023-09-27 18:32:19

可能的重复项:
反射 - 从 System.Type 实例
获取泛型参数 获取通用列表中 T 的实际类型

我正在循环浏览一个类的属性信息列表。在本课程中,我对不同的列表感兴趣 - 例如List<int>List<string>List<Book>、aso。

但是我不知道我如何获得列表对象的类型。我只是得到类似的东西

System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089]].

我可以把这些信息拆开,用这些信息创建一个类型,但我希望有更流畅的方法?

获取泛型 List<T> 对象的 T 类型

简单:

Type type = list.GetType().GetGenericArguments()[0];
// The first argument will be the `T` inside `List<T>`... so the list type ;)
var  list = GetListFromFoo();
Type listType = list.GetType();
Type theTypeOfT = listType.GetGenericArguments()[0]; 

或者用一行:

list.GetType().GetGenericArguments()[0];