获取通用List <t>对象的T类型</t>

时间:2012-04-26 21:15:12

标签: c# list generics reflection

  

可能重复:
  Reflection - Getting the generic parameters from a System.Type instance
  Get actual type of T in a generic List<T>

我正在从一个Class循环一个PropertyInfo-List。 在本课程中,我对不同的列表感兴趣 - 例如List<int>List<string>List<Book>,aso。

但我不知道如何获得List-Objects的类型。我只是得到像

这样的东西
System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089]].

我可以将这些信息分开并根据这些信息创建一个Type,但我希望有更平滑的方式?

2 个答案:

答案 0 :(得分:9)

简单:

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

答案 1 :(得分:4)

var  list = GetListFromFoo();
Type listType = list.GetType();
Type theTypeOfT = listType.GetGenericArguments()[0]; 

或者用一行:

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