2011-09-16 82 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 –

相關問題