Предположим, что IFoo реализован Foo, а IBar реализован FirstBar и SecondBar.
Используя эту регистрацию соглашения:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface())
В контейнере будет три записи:
IFoo = Foo
IBar = FirstBar
IBar = SecondBar
Теперь, как мы можем настроить эту регистрацию, чтобы сообщить контейнеру, что для IBar мы хотим, чтобы SecondBar был зарегистрирован только?Сортировка:
container.Register(
AllTypes.FromThisAssembly().Pick()
.WithService.DefaultInterface()
.For<IBar>().Select<SecondBar>())
Вариант использования: в нашем приложении есть множество сервисов, все они зарегистрированы в соответствии с соглашениями.Однако некоторые из сервисных интерфейсов имеют две или более реализации (например, реальная реализация, поддельная реализация и тестовая реализация).Регистрация конвенции зарегистрирует их всех под одним и тем же интерфейсом, и при разрешении интерфейса мы получим первую реализацию (в недетерминированном порядке).Мы хотим иметь возможность выбрать одну конкретную реализацию для этих сервисов при регистрации.Как мы можем это сделать?