可以.NET 4的ISet <>的HashSet <>取代的NHibernate Iesi.Collections的ISet,HashSet的?

dan*_*n_l 22 c# collections nhibernate castle-windsor

.NET 4 ISet <> HashSet <>可以替换NHibernate Iesi.Collections ISet,HashSet吗?我正在使用Castle代理和NHibernate 3.0.

Jam*_*Ide 18

是.有两种方法:

  1. 将您的集合声明为ICollection<T>并将其初始化为 HashSet<T>.看到这篇文章.我将集合模型化为私有成员并公开,IEnumerable<T>因此这很有效,但缺点是你无法公开ISet<T>.
  2. 使用Jose Romaniello的Set4Net4 NuGet包.请参阅此文章源代码.


cod*_*zen 11

不,不是这个回复.

NHibernate引擎使用Iesi.Collections.ISet内部集合类上的接口,这些接口类用作NHibernate持久存在的类中的集合的包装器.没有直接转换System.Collections.Generic.ISet<T>.

更新: NHibernate 4现在HashSet<T>在内部使用BCL,并HashedSet<T>已从Iesi.Collections依赖项中删除.System.Collections.Generic.ISet<T>现在可以使用的方法.


Fré*_*ric 6

是的,有了 Nhibernate 4,System.Collections.Generic.ISet<>现在就可以使用。