循环遍历泛型类型 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<>))
关于c# - 获取通过 PropertyDescriptorCollection 循环的 List 项的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28213837/