2010-11-27 4 views
1

Ich habe im Grunde:Mit IList in Nhibernate, erhalten nicht initialisiert

Public Class Job: MyBaseClass 
{ 
    public virtual string JobInformation {get;set;} 
    ... 
    public virtual List<Item> JobItems {get;set;} 
} 

ich eine Liste wurde mit und es (JobItems = new List();) Initialisierung im Konstruktor. Allerdings bekam ich eine Ausnahme (Nhibernate.Collection.Generic.PersistentGenericBag)

Ich lese this question und es hieß, ich sollte stattdessen IList verwenden.

So, jetzt habe ich

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); 
} 

Es ist jedoch eine Nullreferenceexception wirft, weil JobItems noch nicht initialisiert ist. Wann initialisiert NHibernate diese Sammlung? Oder wie kann ich dieses Problem lösen?

Antwort

3

Verwendung einer Trägerfeld und bei der Rückkehr sicherstellen, dass es nicht null

public IList<Item> JobItems 
{ 
    get { return _jobItems ?? (_jobItems = new List<Item>()); } 
    set { _jobItems = value; } 
} 
+0

Gibt es einen bestimmten Grund, warum dies nicht, wenn ich diese Sammlung im Konstruktor wie dieses 'JobItems initialisieren funktioniert = new Liste () ' –

1

Sie sollten die Sammlung initialisieren, wenn sie nicht zuvor initialisiert wurde.

private IList<Item> _jobItems; 
public IList<Item> JobItems 
{ 
    get 
    { 
     return _jobItems ?? (_jobItems = new List<Item>()); 
    } 
    private set 
    { 
     _jobItems = value; 
    } 
} 
Verwandte Themen