2014-09-12 74 views
0

我有一個對象,我試圖添加項目。在其他更復雜的類中,我使用了ObservableCollections,但這很簡單(我認爲)。當我嘗試添加到最後一行的SendToList對象時,我得到「對象引用未設置爲對象的實例」。我究竟做錯了什麼?提前Thanx。將列表對象添加到班級成員

我的模型:

public class MailModels 
{ 
    public string From { get; set; } 
    public string ToMain { get; set; } 
    public string ToCC { get; set; } 
    public string ToBCC { get; set; } 
    public string Subject { get; set; } 
    public string Body { get; set; } 
    public List<MailGetter> SendToList { get; set; } 
    public List<MailGetter> SendToCCList { get; set; } 
    public List<MailGetter> SendToBCCList { get; set; } 
} 

public class MailGetter 
{ 
    public string MailName { get; set; } 
    public string MailEmailAddy { get; set; } 
} 

我的控制器:

 MailModels mm = new MailModels(); 
     // going to need a foreach loop here for multiple additions 
     MailGetter mg = new MailGetter() 
     { 
      MailName = "myName", 
      MailEmailAddy = "[email protected]"    
     }; 

     mm.Subject = "test email"; 
     mm.Body = DateTime.Now.ToString(); 
     mm.SendToList.Add(mg); 
+0

你在哪裏crea創建一個新的實例'公開列表 SendToList {get;組; }' 'mm.SendToList = new List ();'應該修復它可以立即看到。 – MethodMan 2014-09-12 21:02:37

回答

2

您還沒有實例化的名單中,其添加項目之前,中實例化:

mm.SendToList = new List<MailGetter>(); 
mm.SendToList.Add(mg); 

,或者你可以在模型的構造函數實例化它們:

public class MailModels 
{ 
    public string From { get; set; } 
    public string ToMain { get; set; } 
    public string ToCC { get; set; } 
    public string ToBCC { get; set; } 
    public string Subject { get; set; } 
    public string Body { get; set; } 
    public List<MailGetter> SendToList { get; set; } 
    public List<MailGetter> SendToCCList { get; set; } 
    public List<MailGetter> SendToBCCList { get; set; } 

    public MailModels() 
    { 
     this.SendToList = new List<MailGetter>(); 
     this.SendToCCList = new new List<MailGetter>(); 
     this.SendToBCCList = new new List<MailGetter>(); 
    } 
} 

,然後你就不會需要實例他們再次,因爲他們在模型的對象創建時實例化:

MailModels mm = new MailModels(); 
mm.SendToList.Add(mg); 
1

您的清單是null在這一點上。增加新的項目之前,您應該初始化這個:

mm.SendToList = new List<MailGetter>(); 
mm.SendToList.Add(mg); 

甚至更​​好,你榜上無名的制定者私下和的MailModels構造函數初始化列表:

public class MailModels 
{ 
    public MailModels() 
    { 
     this.SendToList = new List<MailGetter>(); 
    } 

    ... 
    public List<MailGetter> SendToList { get; private set; } 
    ... 
} 

這個你可以做你班上的所有名單。然後在訪問它之前不需要初始化列表。而且你可以確定該列表不是null,因爲它不能從類外部設置爲null(因爲私人設置者)。