Размышления о свойствах самого высокого уровня

class CBase
{
 object A {get;set;}
 object B {get;set;}
}

class CDerived : CBase
{
 object X {get;set}
 object Y {get;set;}
}

Я пытаюсь получить свойства первого уровня. Для приведенного выше примера предполагаемыми свойствами являются X и Y, а не A и B. С помощью следующего кода я получаю все свойства {A,B,X,Y}. Есть ли какое-либо решение без подписи атрибута.

foreach (var propertyInfo in typeof(CDerived).GetProperties())
{
 propertyInfo.SetValue(model, row[propertyInfo.Name], null);
}

1 ответ

Решение

Попробуйте использовать DeclaredOnly обязательный флаг в вашем GetProperties вызов. Это должно ограничивать возвращаемые свойства указанным уровнем наследования (класса).

Другие вопросы по тегам