Используя отражение и некоторые соглашения об именах, например:
DomainObjectNameRepository
Вы можете динамически создать экземпляр репозитория, который вы ищете, используя Activator.CreateInstance. Если вы знаете, как они названы, используя пример в качестве примера выше. В противном случае у вас также есть шаблон реестра. Например, создайте элемент сопоставления внутри файла web.config, а затем в реестре можно будет создать метод ResolveRepository.
Registry.ResolveRepositoryFor<T>() where T:DomainObject;
Еще одним бонусом к этому является то, что вы можете использовать с ним МОК, инверсию управления на примере Unity.
Файл сопоставления будет сопоставлять DOmainObject с репозиторием, а затем внутри метода реестра, затем он может использовать Unity для разрешения экземпляра этого конкретного репозитория, например, и иметь их как одиночные экземпляры.
Andrew