4

如何从其 PropertyDescriptor 获取 DataRow 的 PropertyInfo。

//pd is a PropertyDescriptor
var propertyinfo = pd.ComponentType.GetProperty(pd.Name);

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

对此有任何想法吗?

4

1 回答 1

3

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

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

顺便说一句,你可以为任何类型发明你自己的伪属性——这个有扩展点(TypeDescriptor, ITypedList, ICustomTypeDescriptor, TypeConverter, 等等);但只有明确使用的代码才能System.ComponentModel看到它们。

于 2013-08-15T13:24:06.503 回答