我基本上有:
Public Class Job: MyBaseClass
{
public virtual string JobInformation {get;set;}
...
public virtual List<Item> JobItems {get;set;}
}
我在构造函数中使用List并初始化它(JobItems = new List();)。但是,我得到了一个例外(Nhibernate.Collection.Generic.PersistentGenericBag)
我读了this question,它说我应该使用IList。
所以现在我有了
public class Job: MyBaseClass
{
public virtual string JobInformation {get;set;}
...
public virtual IList<Item> JobItems {get;set;}
}
public virtual void AddItem(Item item)
{
//snip validation
this.JobItems.Add(item);
}
但是,它会抛出NullReferenceException,因为尚未初始化JobItems。 NHibernate什么时候初始化这个集合?或者我该如何解决这个问题?
答案 0 :(得分:3)
使用支持字段并在返回时确保它不为空
public IList<Item> JobItems
{
get { return _jobItems ?? (_jobItems = new List<Item>()); }
set { _jobItems = value; }
}
答案 1 :(得分:1)
如果先前尚未初始化集合,则应初始化集合。
private IList<Item> _jobItems;
public IList<Item> JobItems
{
get
{
return _jobItems ?? (_jobItems = new List<Item>());
}
private set
{
_jobItems = value;
}
}