Может ли .NET 4 ISet <> HashSet <> заменить NHibernate Iesi.Collections ISet, HashSet? - PullRequest
20 голосов
/ 10 февраля 2012

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

Ответы [ 3 ]

18 голосов
/ 10 февраля 2012

Да. Есть два подхода:

  1. Объявите вашу коллекцию как ICollection<T> и инициализируйте ее как HashSet<T>. См. эту статью . Я моделирую коллекции как частные члены и выставить IEnumerable<T> так что это работает хорошо, но недостатком является то, что вы не можете выставить ISet<T>.
  2. Используйте пакет Set4Net4 NuGet Хосе Романиелло. См. эту статью и исходный код .
11 голосов
/ 10 февраля 2012

Нет, не по состоянию на этот ответ.

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

нет

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

3 голосов
/ 24 марта 2016

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

...