NHibernate IList to List
That’s not how NHibernate works. You don’t get to tell it what the concrete types of your domain model objects are. You only get to tell it what the base types and interfaces are. Then it gets to choose how to implement the domain types efficiently.
For example, NHibernate uses its own internal implementation of IList that knows how to do lazy loading.
Moreover, NHibernate uses its own internal implementation of Building from your domain model. It is Red Bottom Shoes not necessarily the case that a Red Bottom Shoe Red Bottom Shoes s ll the Building objects you will be using with NHibernate will have, as their concrete type, Building. It is only true that they will be Buildings, whether Building is the concrete type of your object, or whether it is th Red Bottom Shoes e base type of the concrete type of your object.
But this is the right thing to do, since you are supposed to be using interfaces and base types instead of concrete types anyway. NHibernate helps you use all the right approaches to programming.