Почему примеры IOC имеют только соотношение OneInterface : OneClass?

Я не понял, что во всех примерах IOC, которые я смог найти, один интерфейс может иметь только один реализованный класс в словаре сопоставления классов. Независимо от того, какой DI или сервисный локатор

На мой взгляд, это немного глупо, нет?


person Bo HU    schedule 02.04.2014    source источник
comment
Пожалуйста, используйте менее оскорбительный пример   -  person ChrisF    schedule 02.04.2014


Ответы (1)


Все контейнеры внедрения зависимостей, которые я просматриваю в моей книге поддерживать несколько регистраций одного и того же интерфейса:

Замок Виндзор

container.Register(Component
    .For<IIngredient>()
    .ImplementedBy<Steak>());
container.Register(Component
    .For<IIngredient>()
    .ImplementedBy<SauceBéarnaise>());

Автофак

builder.RegisterType<SauceBéarnaise>().As<IIngredient>();
builder.RegisterType<Steak>().As<IIngredient>();

Единство

container.RegisterType<IIngredient, Steak>();
container.RegisterType<IIngredient, SauceBéarnaise>("sauce");

Есть больше контейнеров, которые поддерживают это; это только примеры. Моя книга содержит гораздо более подробные примеры.

person Mark Seemann    schedule 02.04.2014
comment
Пожалуйста, не используйте партнерские ссылки для своей книги - meta.stackexchange.com/questions/2716/ - person ChrisF; 02.04.2014