我有一个对象,我正在尝试添加项目。在其他更复杂类的例子中,我使用了ObservableCollections,但这很简单(我想)。当我尝试添加到最后一行的SendToList对象时,我得到“对象引用未设置为对象的实例”。我究竟做错了什么?提前完成。
我的模特:
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 = "myname@myserver.com"
};
mm.Subject = "test email";
mm.Body = DateTime.Now.ToString();
mm.SendToList.Add(mg);
答案 0 :(得分:2)
您尚未实例化List,在添加项目之前实例化它:
mm.SendToList = new List<MailGetter>();
mm.SendToList.Add(mg);
或者您可以在Model的构造函数中实例化它们:
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>();
}
}
然后你不需要再次实例化它们,因为它们是在Model的对象创建时实例化的:
MailModels mm = new MailModels();
mm.SendToList.Add(mg);
答案 1 :(得分:1)
此时您的列表为null
。您应该在添加新项目之前对其进行初始化:
mm.SendToList = new List<MailGetter>();
mm.SendToList.Add(mg);
或者甚至更好,您将列表的setter设为private并在MailModels
的构造函数中初始化列表:
public class MailModels
{
public MailModels()
{
this.SendToList = new List<MailGetter>();
}
...
public List<MailGetter> SendToList { get; private set; }
...
}
您可以为班级中的所有列表执行此操作。然后,您无需在访问列表之前初始化列表。并且您可以确定该列表不是null
,因为它不能从类外部设置为null
(因为私有设置器)。