2013-06-10 4 views
5

In der neuesten Version von Iesi.Collections fehlt Iesi.Collections.Generic.ISet. Es scheint drei Alternativen zu sein:Was ist ein passender NHibernate/Iesi.Collections.Generic.ISet <T> Ersatz?

  1. LinkedHashSet
  2. ReadOnlySet
  3. SynchronizedSet

Iesi.Collections.Generic.ReadOnlySet scheint die Nähe des ISET und die Dokumentation wird zu sein:

... although it's advertised as immutable it really isn't. 
Anyone with access to the wrapped set can still change the set. 

Es scheint, dass der ReadOnlySet der beste Vertreter ist Platz für den ISet? Gegenwärtig fügt die Implementierung Elemente zu einem Set über öffentliche Methoden hinzu, so dass es am besten passt. Die Alternativen (IList, bag?) Scheinen mehr Ressourcen zu benötigen oder sind nicht so schnell/effizient)? Gibt es eine bessere Alternative? (Die Liste soll Duplikate nicht hat, die manuell überprüft werden kann)

Ich werde tun, Sachen wie:

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) 
} 

Im Grunde ist es läuft darauf hinaus, die Alternativen, gibt es Alternativen ohne negative Folgen wie in Geschwindigkeit usw.?

Antwort

4

Nun, nur Iesi.Collections von Nuget bekommen bietet v. 4.

Die Lösung hier mit NHibernate 3.x gearbeitet, aber diese Frage wird wahrscheinlich mit NHibernate 4+ relevant sein. Issuewith NHibernate, Fluent NHibernate and Iesi.Collection. What would you try next?

Ich löschte die Iesi-Referenz und fügte NHibernate hinzu, die eine alte Version von Iesi mit ISet enthielt. Es löst zwar nicht die ISet vs. Alternative, aber es löst mein Problem, sodass ich einfach weiter ISet verwenden kann.

Vielleicht fügen sie es NHibernate 4.0 Release hinzu, oder andernfalls muss es zu dieser Zeit konvertiert werden.

+0

Iesi.Collection v3 ist auch auf NuGet. –

2

Iesi.Collections v4 ist für .Net 4. Der korrekte Ersatz für IESi 3 ist das ISet, das in .Net System.Collections.Generic in .Net4.0 enthalten war.

Sie würden normalerweise auch die HashSet-Klasse von .Net verwenden.

Die in Iesi in v4 verbleibenden Klassen sind einige Sonderfälle, die selten verwendet werden.

Verwandte Themen