Как структуры DI разрешают зависимость для одного и того же интерфейса с несколькими конфигурациями?
Рассмотрим ниже пример кода:
public interface IMyInterface
{
void SetName(string name);
string GetName();
}
public class MyInterfaceImplementor1 : IMyInterface
{
protected string Name { set; get; }
public void SetName(string name)
{
this.Name = name;
}
public virtual string GetName()
{
return this.Name;
}
}
public class MyInterfaceImplementor2 : MyInterfaceImplementor1
{
public override string GetName()
{
return String.Format("Hello! {0}", base.Name);
}
}
И конфигурация DI для этого :(StructureMap предоставлен фрагмент кода)
ObjectFactory.Configure(x =>
{
x.For<IMyInterface>()
.Use<MyInterfaceImplementor1>();
});
ObjectFactory.Configure(x =>
{
x.For<IMyInterface>()
.Use<MyInterfaceImplementor2>();
});
Скажем, в моем коде, в какой-то момент я используюMyInterfaceImplementor1 и в какой-то другой момент, я используюMyInterfaceImplementor2, Мой вопрос заключается в том, как структура DI (StructureMap или любой другой) будет разрешать вышеуказанную конфигурацию? Кроме того, как он будет определять, где вернуть экземплярMyInterfaceImplementor1 и когда то же самоеMyInterfaceImplementor2? ИЛИ Я здесь что-то не так делаю?