.NET 4 ISet HashSet 可以替换NHibernate Iesi.Collections ISet,HashSet吗?

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

不,不是这个回复。

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

更新: NHibernate 4现在在内部使用来自BCL的HashSet ,并且HashedSet Iesi.Collections依赖项中删除HashedSet 。 现在可以使用System.Collections.Generic.ISet方法。

是。 有两种方法:

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

是的,使用Nhibernate 4,使用System.Collections.Generic.ISet<>现在是要走的路 。