Хорошая новость заключается в том, что то, о чем вы просите, возможно и не так сложно в управлении.
Об управлении подключаемыми модулями вы можете взглянуть на Microsoft Prism (http://msdn.microsoft.com/fr-fr/magazine/cc785479.aspx)), которая представляет собой несколько приятных особенностей в разработке модульных приложений.
О 1. Вы можете отобразить подклассы в отдельных сопоставлениях, в отдельных сборках, найти документацию NH. Отдельный файл сопоставления для подкласса выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<subclass name="YourClassFullName, YourPluginAssemblyName"
extends="YourParentClassFullName, TheAssemblyWhereYourBaseClassIsDefined"
discriminator-value="whateveryouwant">
... add your subclass mapping here ...
</subclass>
</hibernate-mapping>
Около 2. Вы можете сохранить соответствие основного домена. Более простым способом было бы создать службу (скажем, IMappingLoader), которую ваши плагины могут использовать для регистрации ваших дополнительных отображений (без переопределения отображения базового класса). Ваша реализация этого сервиса добавит ваше отображение в класс NH Configuration. Например, в Microsoft Prism все ваши плагины должны реализовывать интерфейс IModule, функция которого Initialize () вызывается при загрузке. Эта функция является идеальным местом для вызова службы IMappingLoader.
Надеюсь, это помогло.