如何从其PropertyDescriptor获取DataRow的PropertyInfo。
//pd is a PropertyDescriptor
var propertyinfo = pd.ComponentType.GetProperty(pd.Name);
上面的代码对于列表集合很好用,但是在使用DataTable时不起作用。
有什么想法吗?
最佳答案
PropertyInfo
是反射世界,类型具有显式的CLI属性。 DataTable
不属于那个世界;它通过System.ComponentModel
,TypeDescriptor
等使用PropertyDescriptor
灵活属性模型。基本上:在CLI中没有属性。 PropertyDescriptor
可以(并且用于)以更加灵活,动态的方式描述“属性”,其中布局未指定为类型,而是自定义定义的,通常在运行时即时进行。
所以不:您不能这样做。这个问题没有道理;或者至少在一般情况下没有。也有“类型化数据集”,但坦率地说,我强烈建议您远离它们。
顺便说一下,您可以为任何类型发明自己的伪属性-有扩展名(TypeDescriptor
,ITypedList
,ICustomTypeDescriptor
,TypeConverter
等);但是只有明确使用System.ComponentModel
的代码才能看到它们。