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

时间:2013-03-12 01:44:31

标签: c# .net

我最近去了一次采访,他们在那里问我以下问题:

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

公共对象getValueFromPath(object parentObj,string dataPath);

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

Object1
  objectRef2
    property1
    property2

parentObj将是Object1

dataPath将是objectRef2.property2

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

1 个答案:

答案 0 :(得分:5)

您需要使用反射。

第一步是将dataPath拆分为.,并获取对代表System.TypeparentObj)类型的parentObj.GetType()对象的引用。

然后,对于路径中的每个元素,您将在.GetMember(...)对象上使用类似Type的内容来查找具有该名称的成员,并相应地更新当前的Type对象。

最后到达该属性后,如果您拥有关联的ProprtyInfo对象,则需要调用.GetValue(...)来获取该属性的值。