2013-06-24 77 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); 

每MSDN:

FlattenHierarchy

指定公共和保护的静态成员最多的层次应返回。不会返回继承类中的私有静态成员。静态成员包括字段,方法,事件和属性。嵌套类型不返回。