我最近去了一个面试,在那里他们问我以下问题:
编写一个组件,根据传入的数据路径遍历对象层次结构,并返回实现以下方法的属性值:
公共对象getValueFromPath(对象parentObj,字符串dataPath);
对象层次结构将是这样的事情:
Object1
objectRef2
property1
property2
Run Code Online (Sandbox Code Playgroud)
parentObj将是Object1
dataPath将是objectRef2.property2
有人可以告诉我如何做到这一点.
你需要使用反射.
第一步是拆分dataPathon .,并获得对System.Type表示parentObj (parentObj.GetType())类型的对象的引用.
那么对于路径中的每个元素,你会使用类似.GetMember(...)的对Type对象发现与名称的成员,并更新当前的Type相应对象.
一旦到达最后的属性,并且您拥有关联的ProprtyInfo对象,则需要调用.GetValue(...)以获取属性的值.