2013-06-24 2 views
1

Я пытаюсь понять отражение. Я пытаюсь использовать отражение, чтобы получить свойства от объектов. Вначале я использовалC# - Отражение - Базовые свойства

var propertiesForManuallyCreated = typeof(T).GetProperties(); 

, но затем понял, что не получил базовые свойства. Я попробовал

var propertiesForManuallyCreatedBase = typeof(T).BaseType.GetProperties(); 

, но это не привело меня к базовым свойствам. Как получить базовые свойства? Ниже приведен образ того, о чем я говорю, когда говорю бас.

Local Image

ответ

6

Вы должны использовать перегрузку Type.GetProperties(BindingFlags) со значением BindingFlags.FlattenHierarchy в качестве параметра.

var propertiesForManuallyCreated = 
    typeof(T).GetProperties(BindingFlags.FlattenHierarchy); 

Per MSDN:

FlattenHierarchy

Указывает, что открытые и защищенные статические члены вверх по иерархии, должны быть возвращены. Частные статические члены в унаследованных классах не возвращаются. Статические члены включают поля, методы, события и свойства. Вложенные типы не возвращаются.

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