c# - 根据声明的类筛选由 TypeDescriptor.GetProperties() 返回的属性

标签 c# .net reflection typedescriptor

大家好。我有以下情况。

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

我只看到我可以按属性过滤输出,但我不想为此向我的类型中的属性添加另一个属性。通过反射获取它们而不使用 TypeDescriptor 可以满足我的要求,但这不是我的选择,因为某些属性会在某个时候动态添加到类型中。

有什么想法吗?如果问题不清楚,我可以举个例子。

最佳答案

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

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

关于c# - 根据声明的类筛选由 TypeDescriptor.GetProperties() 返回的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443314/

相关文章:

c# - 将每个用户输入处理为纯文本

c# - 内存映射文件 IList 实现,用于存储大型数据集 "in memory"?

iphone - 如何向 UILabel 添加反射。 IOS

c# - 如何让 Web 应用程序从不同的服务器提供静态文件

javascript - 从 ASP.NET MVC 中的 AngularJS Controller 加载数据,无需加载整个页面

c# - .Net 核心中 Json() 的小写属性名称

c# - DBReader 有行但 Read() 返回 false

c# - 从反射树切换到表达式树

java - 在java中获取通用接口(interface)

c# - 使用 C# 邮件消息发送 MHT 文件