hitch wrote:
they are all of both types?
The statement "the object is of both types" is a non-concept in the OO idiom. If you really an object to function "differently" in a different context, the pattern you are looking for is a
role.
However, in your case It looks like you need lazy-loaded properties (which is not currently supported) and built this "inheritance" model as a hack to get similar functionality. So, you really have only one class (the subclass), it's just that you only need to load a subset of the properties most of the time, so you devised a "base" as a container for those properties.
Lazy properties are a very useful feature that isn't easily supported by NH. As far as I know, the only recognized method involves supplying your own ProxyFactory and LazyInitializer, which seems quite advanced (probably more info on Ayende Rahien's
blog).
I'd also put up another post here to see what workarounds the community has developed to "spoof" this missing feature.