У меня есть веб-проект, и я хочу, чтобы он работал со встроенными ravendb и ravendb.Вот как я думаю, я должен решить эту проблему.
Два проекта, MvcRavendb и MvcRavendb-Embedded, где два проекта ссылаются на два разных пакета nuget, один для ravendb и один для встроенного ravendb.
В моем основном проекте у меня есть интерфейс IDocumentStoreInitializer, который имеет один метод, IDocumentStore InitializeDocumentStore ()
MvcRavenDb и MvcRavenDb-Embedded имеет один класс, подобный этому
public class RegisterRavenDb : IDocumentStoreInitializer {
public IDocumentStore InitializeDocumentStore() {
return new DocumentStore OR EmbeddableDocumentStore();
}
}
Тогда у меня есть класс, который регистрируетсяконкретная реализация, подобная этой
public class RavenRegistry : Registry {
public RavenRegistry() {
For<IDocumentStoreInitializer>().Use<RegisterRavenDb>();
}
}
Пока все хорошо, но у меня есть загрузчик, который настраивает структурную карту следующим образом
public class Bootstrapper {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
// here I want to use the registered concrete implmentaiton of IDocumentStore
var documentStore = new DocumentStore { ConnectionStringName = "RavenDB" };
documentStore.Initialize();
}
}
}
Итак, как я могу сказать structmap использовать InitializeDocumentStore из класса RavenRegistry?Может быть, я что-то упустил, или я выбрал неправильный подход