Что является подходящей заменой NHibernate / Iesi.Collections.Generic.ISet<T>?

В последней версии Iesi.Collections отсутствует Iesi.Collections.Generic.ISet. Кажется, есть три варианта:

  1. LinkedHashSet
  2. ReadOnlySet
  3. 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? В настоящее время реализация добавляет элементы к набору с помощью общедоступных методов, поэтому кажется, что они лучше всего подходят. Альтернативы (IList, bag?), Кажется, требуют больше ресурсов или не так быстро / эффективно)? Есть ли лучшая альтернатива? (В списке не должно быть дубликатов, которые можно проверить вручную)

Я сделаю такие вещи, как:

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

В основном это сводится к альтернативам, есть ли альтернативы без негативных последствий, таких как скорость и т. Д.?

2 ответа

Решение

Что ж, получение Iesi.Collections от Nuget предлагает только v. 4.

Решение здесь работало с NHibernate 3.x, но этот вопрос, вероятно, будет актуален с NHibernate 4+. Выпуск с NHibernate, свободно NHibernate и Iesi.Collection. Что бы вы попробовали дальше?

Я удалил ссылку на Iesi и добавил NHibernate, который включал старую версию Iesi с ISet. На самом деле это не решает ISet против альтернативы, но решает мою проблему, поэтому я могу просто продолжать использовать ISet.

Возможно, они добавят его в релиз NHibernate 4.0, иначе его нужно будет конвертировать в это время.

Iesi.Collections v4 предназначен для.Net 4. Правильная замена ISet в Iesi 3 - это использование ISet, включенного в.Net System.Collections.Generic в.Net4.0.

Обычно вы также используете класс.Net HashSet.

Классы, оставшиеся в Iesi в v4, представляют собой особые реализации, редко используемые.

Другие вопросы по тегам