可以.NET 4 ISet<>的HashSet<>替换NHibernate Iesi.Collections ISet,HashSet?

时间:2012-02-10 02:48:13

标签: c# nhibernate collections castle-windsor

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

3 个答案:

答案 0 :(得分:18)

是。有两种方法:

  1. 将您的收藏集声明为ICollection<T>并将其初始化为 HashSet<T>。见this article。我将集合建模为私有 成员并公开IEnumerable<T>所以这很有效,但缺点是你不能公开ISet<T>
  2. 使用Jose Romaniello的Set4Net4 NuGet包。见this articlesource code

答案 1 :(得分:11)

不,不是这个回复。

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

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

答案 2 :(得分:3)

是的,对于Nhibernate 4,使用System.Collections.Generic.ISet<>现在是the way to go