过滤TypeDescriptor.GetProperties()返回的属性,具体取决于它们声明的类

Sla*_*avo 1 .net c# reflection typedescriptor

大家好.我有以下情况.

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

我只看到我可以按属性过滤输出,但我不想为我的类型中的属性添加另一个属性.让他们通过反射而不是使用TypeDescriptor会做我想要的,但对我来说不是一个选项,因为某些属性会在某些时候动态添加到类型中.

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

Tho*_*que 7

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

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