如何从PropertyInfo获得DataRow的PropertyDescriptor。
//pd is a PropertyDescriptor
var propertyinfo = pd.ComponentType.GetProperty(pd.Name);上面的代码对于列表集合很好,但在我使用DataTable时不起作用。
对此有什么想法吗?
发布于 2013-08-15 13:24:06
PropertyInfo是反射世界,其中类型具有显式的CLI属性。DataTable不属于那个世界;它通过TypeDescriptor、PropertyDescriptor等方式使用System.ComponentModel灵活的属性模型。基本上:在CLI意义上,不存在属性。PropertyDescriptor可以用来描述“属性”,在更灵活、更动态的意义上,布局不是指定为一种类型,而是自定义的,通常在运行时处于动态状态。
所以不:你不能这么做。这个问题没有意义,至少在一般情况下是没有道理的。还有一些“类型化的数据集”,但坦率地说,我强烈建议远离它们。
顺便说一句,您可以为任何类型创建自己的伪属性--它有扩展点(TypeDescriptor、ITypedList、ICustomTypeDescriptor、TypeConverter等);但是只有显式使用System.ComponentModel的代码才会看到它们。
发布于 2022-11-23 20:35:21
DataView构建在DataTable之上:
DataView viewData = table.DefaultView;
因为DataView实现了ITypedList,所以您可以从它获得一个PropertyDescriptors集合:
(视图为ITypedList).GetItemProperties(null)
https://stackoverflow.com/questions/18253339
复制相似问题