Может .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<>
теперь путь.