我已经实现了一个事件,每次类中的值更改时都会触发该事件。 我还有一个包含这些项目集合的类,我想订阅这些项目事件。我正在尝试在这样的属性的 setter 中这样做:
public virtual ISet<ItemType> items
{
get
{
return this._items;
}
set
{
this._items = value;
foreach (var item in this._items)
{
item.PropertyChanged += this.Item_ThePropertyChanged;
}
}
}
但是当我们从“for”部分到达“in this._items”时,我会收到“非法访问加载集合”错误。 这是堆栈跟踪:
at NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean writing)\r\n at NHibernate.Collection.AbstractPersistentCollection.Read()\r\n at NHibernate.Collection.Generic.PersistentGenericSet`1.System.Collections.Generic.IEnumerable.GetEnumerator()\r\n at MyMethod
在此先感谢您的帮助
请您参考如下方法:
显然,NHibernate 在初始化属性时会阻止对集合的访问。将 foreach 循环更改为常规 for 循环是否有帮助?可能只有GetEnumerator()方法被阻塞了:
for (var i = 0; i < _items.Count; i++)
{
_items[i].PropertyChanged += Item_ThePropertyChanged;
}
