获取非继承属性

本文关键字:属性 继承 获取 | 更新日期: 2023-09-27 17:56:10

我正在尝试读取给定对象的所有属性,仅读取在对象类型上声明的属性,不包括继承的属性。 即:

class Parent {
   public string A { get; set; }
}
class Child : Parent {
   public string B { get; set; }
}

所以我只想让B回来。 阅读文档时,我假设下面是我需要的,但实际上什么也没返回。

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList();

获取非继承属性

只需要几个其他的绑定标志

var names = InstanceOfChild.GetType().GetProperties(
   BindingFlags.DeclaredOnly |
   BindingFlags.Public |  
   BindingFlags.Instance).Select(pi => pi.Name).ToList();

试试这个:

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList();

我将BindingFlags.InstanceBindingFlags.Public添加到搜索参数中,分别根据 MSDN 文档

指定实例成员将包含在搜索中。

指定公共成员将包含在搜索中。