什么是合适的NHibernate / iis . collections . generic . iset 更换
本文关键字:iset generic 更换 collections iis NHibernate 什么 | 更新日期: 2023-09-27 18:17:34
在最新版本的Iesi。Collections缺少iis .Collections. generic . iset。似乎有三种选择:
- LinkedHashSet
- ReadOnlySet
- SynchronizedSet
Iesi.Collections.Generic。ReadOnlySet似乎是最接近ISet的,文档中说:
... although it's advertised as immutable it really isn't.
Anyone with access to the wrapped set can still change the set.
似乎ReadOnlySet是isset的最佳替代品?目前的实现是通过公共方法向集合添加项,所以它似乎是最合适的。替代方案(IList, bag?)似乎需要更多的资源,或者不那么快速/高效)?有没有更好的选择?(列表不应该有重复的,这可以手工验证)
我会这样写:
public virtual ISet<MyClass> MyClass
{
get { return this.myClass }
}
public virtual void AddItem(MyClass item)
{
... // Null checks and initialize ISet if null
myClass.Add(item)
}
基本上可以归结为选择,有没有没有负面影响的选择,比如速度等?
好吧,我在找你。Nuget的Collections只提供v. 4。
这里的解决方案是使用NHibernate 3。但是这个问题可能与NHibernate 4+有关。问题与NHibernate,流利的NHibernate和Iesi.Collection。你接下来会尝试什么?
我删除了Iesi引用,并添加了NHibernate,其中包含一个带有ISet的旧版本的Iesi。它实际上并没有解决ISet与alternative的问题,但它确实解决了我的问题,所以我可以继续使用ISet。
也许他们会在NHibernate 4.0版本中添加它,否则那时就需要转换了
Collections v4是为。net 4准备的。正确的替换Iesi 3的ISet是使用。net 4.0中。net的System.Collections.Generic中包含的ISet。
你通常也会使用。net的HashSet类。
v4中Iesi中保留的类是一些很少使用的特殊情况实现。