我想使用TypeDescriptor来获取某种类型的属性。继承层次结构中类型的深度可能会有所不同。我只想获得在类型本身声明的属性,而不是在父类(base)中。问题是,当我调用TypeDescriptor.GetProperties()时,它会将继承层次结构中声明的所有内容返回到Object。
我只看到我可以按属性过滤输出,但我不想为此类型中的属性添加另一个属性。让他们通过反射而不使用TypeDescriptor会做我想要的,但对我来说不是一个选项,因为某些属性会在某些时候动态添加到类型中。
有什么想法吗?如果问题不明确,我可以提供一个例子。
答案 0 :(得分:7)
您可以使用ComponentType
属性过滤属性:
var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
where p.ComponentType == x.GetType()
select p;
答案 1 :(得分:1)
您是否只能修改ICustomTypeDescriptor
的实施以反映您想要的行为?