Отражение свойств для первого уровня

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);
}

person jackie    schedule 20.09.2010    source источник


Ответы (1)


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

person Quintin Robinson    schedule 20.09.2010