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