如何在C#中浏览对象层次结构

Pus*_*ode 0 .net c#

我最近去了一个面试,在那里他们问我以下问题:

编写一个组件,根据传入的数据路径遍历对象层次结构,并返回实现以下方法的属性值:

公共对象getValueFromPath(对象parentObj,字符串dataPath);

对象层次结构将是这样的事情:

Object1
  objectRef2
    property1
    property2
Run Code Online (Sandbox Code Playgroud)

parentObj将是Object1

dataPath将是objectRef2.property2

有人可以告诉我如何做到这一点.

And*_*per 5

你需要使用反射.

第一步是拆分dataPathon .,并获得对System.Type表示parentObj (parentObj.GetType())类型的对象的引用.

那么对于路径中的每个元素,你会使用类似.GetMember(...)的对Type对象发现与名称的成员,并更新当前的Type相应对象.

一旦到达最后的属性,并且您拥有关联的ProprtyInfo对象,则需要调用.GetValue(...)以获取属性的值.