2011-09-16 48 views
1

我有一个简单的演示类这样的...我如何添加对象到ICollection的<>对象

员工

public class Employee 
     { 
      public string Name { get; set; } 
      public string Email { get; set; } 

     } 

一个多类AddressDetails

public class AddressDetails 
     { 
      public string Address1 { get; set; } 
      public string City { get; set; } 
      public string State { get; set; } 
     } 

一个更多EmpAdd

public class EmpAdd 
     { 
      public ICollection<Employee> Employees { get; set; } 
      public ICollection<AddressDetails> AddressDetails { get; set; } 
     } 

o K,当我路过的一些值类这样的..

Employee newEmp = new Employee(); 
      newEmp.Email = "[email protected]"; 
      newEmp.Name = "Judy"; 

      AddressDetails newAddress = new AddressDetails(); 
      newAddress.Address1 = "UK"; 
      newAddress.City = "London"; 
      newAddress.State = "England"; 

一切工作正常...

,但是当我试图在EmpAdd添加这两它给我的错误“未将对象引用设置为实例”请帮助...这只是一个虚拟的..我有,我现在面临同样的问题,7个实体....

EmpAdd emp = new EmpAdd(); 
      emp.Employee.Add(newEmp); 
      emp.AddressDetails.Add(newAddress); 

回答

1

您的ICollection属性从不初始化。自动属性在你的属性后面实现一个字段,但它仍然需要分配给。 我建议让你的属性只读(摆脱了一套),实现了对现场它自己的身后,并初始化它声明:

private List<Employee> _employees = new List<Employee>(); 

public ICollection<Employee> Employees { 
    get 
    { 
     return _employees; 
    } 
} 
+0

这真是太棒了.... thx ... –

2

emp.Employee和emp.AddressDetails不实例化。您需要创建一个构造函数来实例化它们

public class EmpAdd 
{ 
    public ICollection<Employee> Employees { get; set; } 
    public ICollection<AddressDetails> AddressDetails { get; set; } 
    public EmpAdd() 
    { 
     Employees = new List<Employee>(); 
     AddressDetails = new List<AddressDetails>(); 
    } 
} 
+0

请问您可以在这里粘贴一些代码供我参考...欣赏您的快速反应.. thx –

0

意味着什么@Adrian Iftode是这样的:

EmpAdd emp = new EmpAdd(); 
     emp.Employee = newEmp; 
     emp.AddressDetails = newAddress; 
     emp.Employee.Add(newEmp); 
     emp.AddressDetails.Add(newAddress); 

这应该解决这个问题。
无论如何,坚持@Menno van den Heuvel的建议。

+0

thx您的建议.... + 1 –

相关问题