Ответ 1
Просто нужно пару других BindingFlags
var names = InstanceOfChild.GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).Select(pi => pi.Name).ToList();
Я пытаюсь прочитать все свойства данного объекта, читая только те, которые объявлены в типе объекта, за исключением тех, которые наследуются. 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();
Просто нужно пару других BindingFlags
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();
Я добавил BidningFlags.Instance
и BindingFlags.Public
параметры поиска, которые в соответствии с документацией MSDN с уважением:
Указывает, что члены экземпляра быть включенным в поиск.
и
Указывает, что публичные члены должны быть включенным в поиск.