I следующая цепочка зависимостей:
Handler() [depends on]--> Repository(string connectionString)
Итак, у меня есть IHandler, который зависит от IRepository, который, в свою очередь, требует строку подключения.Строка подключения является динамической и передается во время выполнения (поэтому ее нельзя прочитать из файла конфигурации и т. Д.)
Представьте, что система создает обработчик со следующим кодом:
var handler = ObjectFactory.GetInstance<IHandler>();
Это терпит неудачу, потому что не может быть удовлетворена зависимость Repository (connectionString).Моей следующей идеей было использование ExplicitArguments StructureMap для предоставления аргументов в начале построения цепочки зависимостей, то есть:
var arguments = new ExplicitArguments();
arguments.SetArg("connectionString", "SOME CONNECTION STRING");
var handler = ObjectFactory.GetInstance<IHandler>(arguments);
Это не удалось, потому что теперь StructureMap ожидает найти зависимость connectionString в Handler (и если он имеет, в любом случае, не передает эти аргументы в конструктор репозитория.)
Вопрос в следующем: Есть ли способ построить эту цепочку, предоставив аргументы вверху и позволив StructureMapвыяснить, что хранилищу нужен аргумент connectionString?