获取非继承属性

Ada*_*kis 20 c# reflection

我正在尝试读取给定对象的所有属性,只读取在对象类型上声明的那些属性,不包括那些继承的对象.IE:

class Parent {
   public string A { get; set; }
}

class Child : Parent {
   public string B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以我想只让B回来.阅读文档,我假设下面是我需要的,但实际上根本没有返回任何东西.

var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

Cla*_*ton 23

只需要一些其他的BindingFlags

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


Nic*_*rdi 6

试试这个:

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

我根据MSDN文档恭敬地添加了BidningFlags.InstanceBindingFlags.Public搜索参数:

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

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