通过这取决于他们在声明的类TypeDescriptor.GetProperties()返回筛选器属性

2019-10-17 15:01发布

大家好。 我有以下的情况。

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

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

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

Answer 1:

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

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


Answer 2:

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



文章来源: Filter properties returned by TypeDescriptor.GetProperties() depending on the class they are declared in