C# - 反射 - 基础属性

Dan*_*ner 1 c# reflection

我想了解反思.我试图使用反射来获取对象的属性.我第一次使用

var propertiesForManuallyCreated = typeof(T).GetProperties();
Run Code Online (Sandbox Code Playgroud)

但后来意识到它没有获得基本属性.我试过了

var propertiesForManuallyCreatedBase = typeof(T).BaseType.GetProperties();
Run Code Online (Sandbox Code Playgroud)

但这并没有让我得到基本属性.如何获得基本属性?下面是我说基础时我正在谈论的图像.

本地图片

Ada*_*ras 6

您需要使用Type.GetProperties(BindingFlags)值为BindingFlags.FlattenHierarchy参数的重载.

var propertiesForManuallyCreated =
    typeof(T).GetProperties(BindingFlags.FlattenHierarchy);
Run Code Online (Sandbox Code Playgroud)

每个MSDN:

FlattenHierarchy

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