我正在尝试读取给定对象的所有属性,只读取在对象类型上声明的那些属性,不包括那些继承的对象。 IE:
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();
答案 0 :(得分:22)
只需要一些其他的BindingFlags
var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Select(pi => pi.Name).ToList();
答案 1 :(得分:5)
试试这个:
var names = InstanceOfChild.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).Select(pi => pi.Name).ToList();
我将BidningFlags.Instance
和BindingFlags.Public
添加到根据MSDN documentation尊重的搜索参数中:
指定实例成员 被包括在搜索中。
和
指定公共成员 被包括在搜索中。