Установить обработчик событий для элементов коллекции после того, как NHibernate установит его значение - PullRequest
2 голосов
/ 26 мая 2010

Я реализовал событие, которое вызывается каждый раз, когда значение изменяется в классе. У меня также есть класс, в котором есть коллекция этих элементов, и я хотел бы подписаться на события этих элементов. Я пытаюсь сделать это в установщике свойства, как это:

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

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

Но я получаю ошибку «незаконный доступ к загрузке коллекции», как только мы достигаем «in..items» из части «for». Вот трассировка стека:

в NHibernate.Collection.AbstractPersistentCollection.Initialize (логическое написание) IEnumerable.GetEnumerator () \ r \ n в MyMethod

Заранее спасибо за любую помощь

1 Ответ

0 голосов
/ 27 мая 2010

Очевидно, что NHibernate блокирует доступ к коллекции во время инициализации свойства. Помогает ли изменить цикл foreach на обычный цикл for? Возможно, заблокирован только метод GetEnumerator():

for (var i = 0; i < _items.Count; i++) 
{
  _items[i].PropertyChanged += Item_ThePropertyChanged;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...