2

大家好。我有以下情况。

我想使用 TypeDescriptor 来获取某种类型的属性。继承层次结构中类型的深度可能会有所不同。我只想获取在类型本身而不是在其父级(基)中声明的属性。问题是,当我调用 TypeDescriptor.GetProperties() 时,它会将继承层次结构中声明的所有内容返回到 Object。

我只看到我可以按属性过滤输出,但我不想仅仅为此向我的类型中的属性添加另一个属性。让它们通过反射而不使用 TypeDescriptor 会做我想要的,但不是我的选择,因为某些属性将在某个时候动态添加到类型中。

有任何想法吗?如果问题不清楚,我可以提供一个例子。

4

2 回答 2

7

您可以使用以下属性过滤ComponentType属性:

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
                 where p.ComponentType == x.GetType()
                 select p;
于 2009-09-18T09:28:25.967 回答
1

你不能只修改实现ICustomTypeDescriptor以反映你想要的行为吗?

于 2009-09-18T09:04:29.830 回答