获取通过PropertyDescriptorCollection循环的List项的类型

时间:2015-01-29 11:40:05

标签: c# properties propertydescriptor

循环遍历泛型类型T的属性,我想知道T恰好是List,那么该列表包含哪些类型的项目。

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in properties)
       if (prop.PropertyType.Name.Equals("List`1"))
       ???

我可以使用上面的代码检测类型是否为List但是我如何才能获得列表项的类型?

1 个答案:

答案 0 :(得分:2)

你可以使用GetGenericArguments方法获取泛型参数,它会返回一个类型数组,你可以得到第一个类型,它是你列表中泛型参数的类型:

var type = prop.PropertyType.GetGenericArguments()[0];

而不是比较名称以检查属性类型,我会建议这样:

if(prop.PropertyType.IsGenericType &&
   prop.PropertyType.GetGenericTypeDefinition() == typeof(List<>))