所以我有一个对象列表(AllCompanies),列表中的所有对象都继承自同一个类(公司).而且我在类中都有一个字段,它们都是继承的,完全是另一个类(Employees).我想创建一个当前活动的每个Employee的列表,并且我将每个公司都放在一个对象列表中.正如您在下面看到的,我试图简单地将Employee的字段添加到列表中,但是我收到错误,因为我试图将对象转换为员工列表.
public class Main()
{
List<List<Employee>> AllEmployees = new List<List<Employee>>();
List<object> AllCompanies = new List<object>() { new SmallCompany(), new LargeCompany(), new SmallCompany() };
AllCompanies.ForEach(delegate(object o)
{
// - Here's the problem.
AllEmployees.Add(o.GetType().GetField("Employees").GetValue(o));
// - Here's the problem.
});
}
class Employee
{
public string Name;
public int Age;
public Employee(string name, int age)
{
Name = name;
Age = age;
}
}
class Company
{
public List<Employee> Employees = new List<Employee>();
}
class SmallCompany : Company
{
public SmallCompany(){}
}
class LargeCompany : Company
{
public LargeCompany(){}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能最有效地完成这项工作?
您不应该将列表键入类型列表object.对象都是Company对象,列表应该反映出来.
List<Company> AllCompanies = new List<Company>()
{
new SmallCompany(),
new LargeCompany(),
new SmallCompany()
};
Run Code Online (Sandbox Code Playgroud)
这将消除对任何可能使生活变得艰难的可怕反射代码的需要.
一旦你将每个项目投射到一个新项目,给定一个选择器很容易做到:
var allEmployees = AllCompanies.Select(company => company.Employees);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |