Это не так, как работает NHibernate. Вы не можете сказать, каковы конкретные типы объектов вашей доменной модели. Вы только можете сказать ему, каковы основные типы и интерфейсы. Затем он решает, как эффективно реализовать типы доменов.
Например, NHibernate использует собственную внутреннюю реализацию IList<T>
, которая знает, как выполнять отложенную загрузку.
Кроме того, NHibernate использует собственную внутреннюю реализацию Building
из модели вашего домена. Это не обязательно тот случай, когда все Building
объекты, которые вы будете использовать с NHibernate, будут иметь в качестве своего конкретного типа Building
. Верно, что они будут Building
с, независимо от того, является ли Building
конкретным типом вашего объекта или базовым типом конкретного типа вашего объекта.
Но это , что нужно сделать , поскольку вы должны использовать интерфейсы и базовые типы вместо конкретных типов в любом случае. NHibernate помогает вам использовать все правильные подходы к программированию.
Теперь, зачем вам нужен List<Building>
как таковой? Почему IList<Building>
не будет достаточно?