Можно иметь несколько классов, реализующих один и тот же интерфейс со структурной картой.
Если вы называете свои сопоставления, вы можете получить их с таким именем позже.
For<MyInterface>().Add<Class1ForMyInterface>().Named("Class1");
For<MyInterface>().Add<Class2ForMyInterface>().Named("Class2");
Если вам нужен ваш Class1ForMyInterface, тогда вы можете позвонить
container.GetInstance<MyInterface>("Class1");
Есть также несколько способов отобразить все это в вашем контейнере, а также
For<IController>().Add<Controller1>().Ctor<MyInterface>().Is(i => i.GetInstance<MyInterface>("Class1"));
Или, если вы сохраняете smartinsatance, который возвращается при регистрации типа, вы можете использовать его в сопоставлении.
var class1 = For<MyInterface>().Add<Class1ForMyInterface>().Named("Class1");
For<IController>().Add<Controller1>().Ctor<MyInterface>().Is(class1);