Я пытаюсь настроить альтернативные аргументы конструктора, когда запрошенный тип внедряется в несколько классов.В предыдущих версиях StructureMap это выглядело бы очень похоже на самый первый пример DSL на странице документа , но у меня возникли проблемы с выяснением, как настроить его с новым синтаксисом.
Теперь у меня есть один интерфейс с одной конкретной реализацией, но мне нужно, чтобы аргументы конструктора изменялись в зависимости от объекта, в который он вводится.Например:
interface IInterface{}
class Concrete : IInterface
{
public Concrete(string param) {}
}
class ConsumerOne
{
public ConsumerOne(IInterface i) {} // Concrete(param) to be "One"
}
class ConsumerTwo
{
public ConsumerTwo(IInterface i) {} // Concrete(param) to be "Two"
}
class MyRegistry : Registry
{
public MyRegistry()
{
For<IInterface>()
.Use<Concrete>
.Ctor<string>("param")
.Is(/* "One" if being injected into ConsumerOne,
"Two" if being injected into ConsumerTwo */);
}
}
Я думаю, что могу, возможно, сделать это с .AddInstance(x => {})
, после For<IInterface>()
, но у меня возникают проблемы с поиском, как это сделать.Буду признателен за любую помощь или совет!