Может .NET 4 ISet <> HashSet <> заменить NHibernate Iesi.Collections ISet, HashSet?

Может ли .NET 4 ISet < > HashSet < > заменить NHibernate Iesi.Collections ISet, HashSet? Я использую прокси-сервер Castle и NHibernate 3.0.

Ответ 1

Нет, не от этого ответа.

В двигателе NHibernate используется интерфейс Iesi.Collections.ISet для внутренних классов коллекции, которые используются как обертки вокруг коллекций в ваших классах, которые NHibernate сохраняется. Прямое преобразование в System.Collections.Generic.ISet<T> отсутствует.

Обновление: NHibernate 4 теперь использует HashSet<T> из BCL внутри, а HashedSet<T> был удален из зависимости Iesi.Collections. Теперь доступен подход к использованию System.Collections.Generic.ISet<T>.

Ответ 2

Да. Существует два подхода:

  • Объявите свою коллекцию как ICollection<T> и инициализируйте ее как HashSet<T>. См. в этой статье. Я собираю коллекции как частные членов и выставить IEnumerable<T>, так что это хорошо работает, но недостатком является то, что вы не можете выставить ISet<T>.
  • Использовать пакет Set4Net4 NuGet от Jose Romaniello. См. в этой статье и исходный код.

Ответ 3

Да, с Nhibernate 4, используя System.Collections.Generic.ISet<> теперь путь.