循环遍历泛型类型的属性T
,我想知道T
是否恰好是List
那么该列表包含什么类型的项目。
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in properties)
if (prop.PropertyType.Name.Equals("List`1"))
???
我可以使用上面的代码检测类型是否是List
,但是我如何获取列表项的类型?
您可以使用
GetGenericArguments
方法获取泛型参数,它将返回一个类型数组,您可以只获取第一个类型,即列表的泛型参数类型:
var type = prop.PropertyType.GetGenericArguments()[0];
另外,与其比较名称来检查属性类型,我建议这样做:
if(prop.PropertyType.IsGenericType &&
prop.PropertyType.GetGenericTypeDefinition() == typeof(List<>))