2009-09-18 41 views
1

嘿,伙计们宣布。我有以下情况。筛选器属性,他们在

我想用一个TypeDescriptor获取某种类型的属性。继承层次结构中的类型深度可能会有所不同。我只想获取类型本身声明的属性,而不是父类(基地)。问题是,当我叫TypeDescriptor.GetProperties(),它将返回的一切宣告了继承层次可达对象。

我只看到了,我可以过滤通过属性的输出,但我不希望添加其他属性的属性在我的类型只是为了这个。让他们通过反射和不使用TypeDescriptor会做我想做的,但不是我的选择,因为有些属性将被动态地添加到在某些时候的类型。

任何想法?如果问题不明确,我可以举一个例子。

回答

7

您可以使用ComponentType属性筛选器属性:

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>() 
       where p.ComponentType == x.GetType() 
       select p; 
1

你就不能修改ICustomTypeDescriptor实施,以反映您所期望的行为?