是Iesi.Collections.Generic.LinkedHashSet <T>迁移到NHibernate 4.0.3.4000时Iesi.Collections.Generic.ISet <T>的最佳替代方案

use*_*276 3 generics nhibernate

最近我用最新版本4.0.3.4000升级了我的NHibernate库.之后 - 在编译期间,我遇到了与"Iesi.Collections.Generic.ISet"相关的问题.从细节我明白 - 这个界面被删除,备用选项可用 - 其中一个是LinkedHashSet.

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

Rad*_*ler 6

这是发行说明:

**已知从NH3.3.3.GA到4.0.0.GA的突然变化

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

所以我们现在可以使用界面了

System.Collections.Generic.ISet<T>
Run Code Online (Sandbox Code Playgroud)

并且作为其实现甚至是System内置类型,例如

System.Collections.Generic.HashSet<T>
Run Code Online (Sandbox Code Playgroud)

因此减少对iesi库的依赖......

但正如这里所讨论的:什么是合适的NHibernate/Iesi.Collections.Generic.ISet <T>替换?-我们也可以使用LinkedHashSet<T>,ReadOnlySet<T>,SychronizedSet<T>

还要检查Customer.csNHibernate测试项目:

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; }
        }
        ...
Run Code Online (Sandbox Code Playgroud)