2010-05-26 1 views
2

J'ai implémenté un événement qui est déclenché chaque fois qu'une valeur change dans une classe. J'ai aussi une classe qui a une collection de ces articles et je voudrais m'abonner à ces événements. Je suis en train de le faire dans le setter d'une propriété comme celui-ci:Définir le gestionnaire d'événements sur les éléments de collection après que NHibernate a défini sa valeur

public virtual ISet<ItemType> items 
{ 
    get 
{ 
    return this._items; 
} 

set 
{ 
    this._items = value; 
    foreach (var item in this._items) 
    { 
    item.PropertyChanged += this.Item_ThePropertyChanged; 
    } 
} 
} 

Mais j'obtenir un « accès illégal à la collecte de chargement » erreur dès que nous arrivons à la « dans this._items » de la " pour "partie. Voilà la trace de pile:

à NHibernate.Collection.AbstractPersistentCollection.Initialize (écriture Boolean) \ r \ n à NHibernate.Collection.AbstractPersistentCollection.Read() \ r \ n à NHibernate.Collection.Generic.PersistentGenericSet `1.System.Collections.Generic.IEnumerable.GetEnumerator() \ r \ n à MyMethod

Merci à l'avance pour toute aide

Répondre

0

Apparemment blocs NHibernate accès à la collection lors de son initialisation la propriété. Cela aide-t-il à changer la boucle foreach en boucle normale for? Il se peut que seule la méthode GetEnumerator() soit bloquée:

for (var i = 0; i < _items.Count; i++) 
{ 
    _items[i].PropertyChanged += Item_ThePropertyChanged; 
}