我有一个对象
public class School
{
public Employee Emp{get;set;}
public string City{get;set;}
}
public class Employee
{
public string Name{get;set;}
}
使用反射我需要从学校对象中获取此员工姓名
我试过
School schl=New School();schl.Employee=new Employee{Name="Shalem"};
var empName= schl.GetType().GetProperty("Emp.Name").GetValue(schl, null)
也试过
PropertyDescriptorCollection allProp= TypeDescriptor.GetProperties(schl);
var empName=allProp["Emp.Name"].GetValue(schl);
我总是得到null。我怎么能得到?
注意:事情是我不知道它将包含什么对象。但我所知道的是,我将获得内部对象的确切名称,如“Emp.Name”等。需要通用解决方案
答案 0 :(得分:2)
School schl=New School();
schl.Employee=new Employee{Name="Shalem"};
var emp = schl.GetType().GetProperty("Emp").GetValue(schl, null)
var empName = emp.GetType().GetProperty("Name").GetValue(emp, null);
将其拆分,获取Employee
对象,然后获取Name
的{{1}}。
虽然我可以Employee
在这种情况下看不到这样做的好处 - 除非代码的范围不同?