gpt4 book ai didi

c# - 在 NHibernate 设置其值后在集合项上设置事件处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:52 26 4
gpt4 key购买 nike

我已经实现了一个事件,每次类中的值更改时都会触发该事件。我还有一个包含这些项目集合的类,我想订阅这些项目事件。我正在尝试在这样的属性的 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;
}

关于c# - 在 NHibernate 设置其值后在集合项上设置事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com