在最新版本的Iesi.Collections中缺少Iesi.Collections.Generic.ISet。
似乎有三种选择:

  • LinkedHashSet
  • ReadOnlySet
  • SynchronizedSet

  • Iesi.Collections.Generic.ReadOnlySet似乎是最接近ISet的文档,文档中指出:
    ... although it's advertised as immutable it really isn't.
    Anyone with access to the wrapped set can still change the set.
    

    似乎ReadOnlySet是ISet的最佳替代品?当前,该实现是通过公共(public)方法将项目添加到集合中,因此看起来是最合适的。替代方案(IList,袋装?)似乎需要更多资源,还是不那么快速/高效?有更好的选择吗? (列表中不应包含重复项,可以手动进行验证)

    我会做类似的事情:
    public virtual ISet<MyClass> MyClass
    {
        get { return this.myClass }
    }
    
    public virtual void AddItem(MyClass item)
    {
        ... // Null checks and initialize ISet if null
        myClass.Add(item)
    }
    

    基本上可以归结为其他选择,是否有没有负面影响(例如速度等)的其他选择?

    最佳答案

    好吧,从Nuget获取Iesi.Collections仅提供v.4。

    此处的解决方案适用于NHibernate 3.x,但该问题可能与NHibernate 4+有关。 Issuewith NHibernate, Fluent NHibernate and Iesi.Collection. What would you try next?

    我删除了Iesi引用,并添加了NHibernate,其中包括带有ISet的Iesi的旧版本。它实际上并不能解决ISet与替代方法,但是可以解决我的问题,因此我可以继续使用ISet。

    也许他们会将其添加为NHibernate 4.0发行版,否则它将需要在那时进行转换。

    关于c# - 什么是合适的NHibernate/Iesi.Collections.Generic.ISet <T>替代品?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17018943/

    10-13 01:02