Generics Is Iesi.Collections.Generic.LinkedHashSet<;T>;Iesi.Collections.Generic.ISet<;T>;迁移到NHibernate 4.0.3.4000时

Generics Is Iesi.Collections.Generic.LinkedHashSet<;T>;Iesi.Collections.Generic.ISet<;T>;迁移到NHibernate 4.0.3.4000时,generics,nhibernate,Generics,Nhibernate,最近,我用最新版本4.0.3.4000升级了我的NHibernate库。之后——在编译过程中,我遇到了一个与“Iesi.Collections.Generic.ISet”相关的问题。从细节上,我了解到-此接口已关闭,并且有其他选项可用-其中之一是LinkedHashSet 我想知道-这是取代ISet的最佳替代方案吗?这来自: **从NH3.3.3.GA到4.0.0.GA的已知断裂变化 NHibernate现在的目标是.NET4.0。Iesi.Collections中集合类型的许多用法现在已更改为

最近,我用最新版本4.0.3.4000升级了我的NHibernate库。之后——在编译过程中,我遇到了一个与“Iesi.Collections.Generic.ISet”相关的问题。从细节上,我了解到-此接口已关闭,并且有其他选项可用-其中之一是LinkedHashSet

我想知道-这是取代ISet的最佳替代方案吗?

这来自:

**从NH3.3.3.GA到4.0.0.GA的已知断裂变化

NHibernate现在的目标是.NET4.0。Iesi.Collections中集合类型的许多用法现在已更改为使用BCL中的相应类型。这些类型的API略有不同

所以我们现在可以使用这个接口了

System.Collections.Generic.ISet<T>
从而减少对iesi库的依赖

但正如这里所讨论的:-我们也可以使用
LinkedHashSet
ReadOnlySet
SychronizedSet

同时检查NHibernate中的测试项目:

using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace NHibernate.DomainModel.Northwind.Entities
{
    public class Customer
    {
        private readonly ISet<Order> _orders;

        public Customer()
        {
            _orders = new System.Collections.Generic.HashSet<Order>();
        }
        public virtual ISet<Order> Orders
        {
            get { return _orders; }
        }
        ...
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
命名空间NHibernate.DomainModel.Northwind.Entities
{
公共类客户
{
私人只读ISet_订单;
公众客户()
{
_orders=new System.Collections.Generic.HashSet();
}
公共虚拟ISet订单
{
获取{返回_订单;}
}
...

Hi Radim,谢谢你提供的详细信息。我已经检查了这三个备选方案,我会更感兴趣地了解-LinkedHashSet是ISet的最佳备选方案吗?我问的唯一原因是,我没有找到这三个方案的更多细节、差异和比较。我只是在发布说明摘要上读到-如果我们需要使用“订购方式”在列表中,我们仍然应该使用“Iesi.Collection”NHibernate库。因此,任何关于这方面的细节/帮助都将不胜感激。非常感谢。无法给您深入的比较。仅凭我的经验…如果我能减少对任何第三方库的依赖性…我会的。所以,我根本不使用iesi,NHibernate正在为我创造奇迹。希望它能帮上一点忙…是的,确实如此。谢谢。@USER17276T他在LinkedHashSet的代码文档中提到:“此集合的枚举保证按元素添加的顺序返回元素。”如果需要该属性,请使用此类。否则,请使用常规HashSet。Radim的回复应标记为已接受。
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace NHibernate.DomainModel.Northwind.Entities
{
    public class Customer
    {
        private readonly ISet<Order> _orders;

        public Customer()
        {
            _orders = new System.Collections.Generic.HashSet<Order>();
        }
        public virtual ISet<Order> Orders
        {
            get { return _orders; }
        }
        ...