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

How do you use reflection to get a sub property?

让我们看看我是否可以解释我正在尝试做的事情......

假设我有一个对象,有一条通往 属性 的路径,如下所示:

Appointment.Person.Name

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

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

但是我该如何更新根对象的名称 属性?

怎么样:

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

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

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

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