Как структуры 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? ИЛИ Я здесь что-то не так делаю?

Ответы на вопрос(4)

Ваш ответ на вопрос