Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据TypeDescriptor.GetProperties()在其中声明的类,筛选TypeDescriptor.GetProperties()返回的属性_C#_.net_Reflection_Typedescriptor - Fatal编程技术网

C# 根据TypeDescriptor.GetProperties()在其中声明的类,筛选TypeDescriptor.GetProperties()返回的属性

C# 根据TypeDescriptor.GetProperties()在其中声明的类,筛选TypeDescriptor.GetProperties()返回的属性,c#,.net,reflection,typedescriptor,C#,.net,Reflection,Typedescriptor,嘿,伙计们。我有以下情况 我想使用TypeDescriptor来获取特定类型的属性。类型在继承层次结构中的深度可能会有所不同。我只想获取在类型本身中声明的属性,而不是在其父级(基)中声明的属性。问题是,当我调用TypeDescriptor.GetProperties()时,它会将继承层次结构中声明的所有内容返回给Object 我只看到我可以通过属性过滤输出,但我不想仅仅为了这个而向我的类型中的属性添加另一个属性。让它们通过反射而不使用TypeDescriptor可以实现我想要的功能,但这不是我的

嘿,伙计们。我有以下情况

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

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


有什么想法吗?如果问题不清楚,我可以提供一个示例。

您是否可以修改
ICustomTypeDescriptor
的实现以反映您所需的行为?

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

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
                 where p.ComponentType == x.GetType()
                 select p;
var properties=来自TypeDescriptor.GetProperties(x.Cast()中的p)
其中p.ComponentType==x.GetType()
选择p;