0

我有一个对象

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);

我总是得到空值。我怎样才能得到?

注意:问题是我不知道它将包含什么对象。但我所知道的是,我将获得内部对象的确切名称,如“Emp.Name”等。需要一个通用的解决方案

4

1 回答 1

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.Employee

尽管在这种情况下我看不到这样做的好处string empName = schl.Employee.Name-除非代码的范围不同?

于 2013-05-07T10:41:07.183 回答