来自 PropertyDescriptor 的 DataRow 的 PropertyInfo

San*_*ann 5 c# datatable propertyinfo propertydescriptor

如何从 DataRow 的 PropertyDescriptor 获取其 PropertyInfo。

//pd is a PropertyDescriptor
var propertyinfo = pd.ComponentType.GetProperty(pd.Name);
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于列表集合,但在使用 DataTable 时则不起作用。

对此有什么想法吗?

Mar*_*ell 4

PropertyInfo是反射世界,其中类型具有显式 CLI 属性。DataTable 不属于那个世界;它使用System.ComponentModel灵活的属性模型,via TypeDescriptorPropertyDescriptor等等。基本上:CLI 意义上没有属性。PropertyDescriptor可以用来(并且被用来)以更灵活、动态的方式描述“属性”,其中布局未指定为类型,而是自定义定义的,通常在运行时动态定义。

所以不:你不能这样做。这个问题没有意义;或者至少在一般情况下不会。还有“类型化数据集”,但坦率地说,我强烈建议远离它们。

顺便说一句,您可以为任何类型发明自己的伪属性- 有扩展点(TypeDescriptorITypedListICustomTypeDescriptorTypeConverter等);但只有显式使用的代码System.ComponentModel才会看到它们。