Подтвердить что ты не робот

Получить не наследуемые свойства

Я пытаюсь прочитать все свойства данного объекта, читая только те, которые объявлены в типе объекта, за исключением тех, которые наследуются. 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();
4b9b3361

Ответ 1

Просто нужно пару других BindingFlags

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

Ответ 2

Попробуйте следующее:

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

Я добавил BidningFlags.Instance и BindingFlags.Public параметры поиска, которые в соответствии с документацией MSDN с уважением:

Указывает, что члены экземпляра быть включенным в поиск.

и

Указывает, что публичные члены должны быть включенным в поиск.