2012-02-19 3 views
1

У меня возникли проблемы с получением статического свойства через отражение в .NET 4.0.Отражение на наследуемое статическое свойство

Скажем, например, у меня есть следующие классы:

class Foo 
{ 
    public static int MyProperty 
    { 
     get { return 1234; } 
    } 
} 

class Bar : Foo 
{ 

} 

Теперь, если я позвоню:

typeof(Foo).GetProperties(); 

Я получаю ожидаемый список одного свойства, "MyProperty". Если вместо этого я звоню:

typeof(Bar).GetProperties(); 

Я ничего не получаю. К сожалению, я строго придерживаюсь значений, хранящихся как типы данных Type, поэтому я не могу напрямую позвонить typeof(Foo).GetProperties().

Спасибо за помощь!
Годвин

ответ

2

Вы можете указать BindingFlags.FlattenHierarchy, чтобы получить статические свойства, объявленные в базовом классе:

var props = typeof(Bar).GetProperties(BindingFlags.Public | 
             BindingFlags.Static | 
             BindingFlags.FlattenHierarchy); 
+0

Вот и все! Благодаря! – Godwin

0
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static); 

Если вам нужны частные свойства, которые нужно добавить BindingFlags.NonPublic, а также. См. BindingFlags Enumeration

Смежные вопросы