你如何使用反射来获得子属性?

时间:2015-06-04 15:53:01

标签: c# .net reflection

让我们看看能否解释一下我要做的事情......

假设我有一个对象,其中包含一个如下所示的属性路径:

Appointment.Person.Name

如果我想更新“Person”属性,我可以这样做:

PropertyInfo subPropertyInfo = apptObject.GetType().GetProperty("Person");
subPropertyInfo.SetValue(apptObject, replacementValue, null);

但是如何更新根对象的Name属性?

2 个答案:

答案 0 :(得分:2)

获取Person的当前值,然后以与您当前相同的方式更新它:

PropertyInfo subPropertyInfo = apptObject.GetType().GetProperty("Person");
Object p = subPropertyInfo.GetValue(apptObject);

PropertyInfo subSubPropertyInfo = p.GetType().GetProperty("Name");
subSubPropertyInfo.SetValue(p, replacementValue, null);

答案 1 :(得分:0)

怎么样:

PropertyInfo subPropertyInfo = apptObject.Person.GetType().GetProperty("Name");
subPropertyInfo.SetValue(apptObject.Person, replacementValue, null);
相关问题