Учитывая приведенную ниже конфигурациюЗамок Виндзор Fluent API: Определить зависимость явно
Container.Register(Component.For<A>().Named("foo"));
Container.Register(Component.For<B>().Named("foobar"));
Container.Register(
AllTypes.Pick()
.FromAssemblyNamed("MyAssembly")
.If(t => t.Name.EndsWith("ABC"))
.Configure(c => c.LifeStyle.Is(LifestyleType.Transient))
.WithService.Select(i => typeof(I))
);
Container.Register(
AllTypes.Pick()
.FromAssemblyNamed("MyAssembly")
.If(t => t.Name.EndsWith("123"))
.Configure(c => c.LifeStyle.Is(LifestyleType.Transient))
.WithService.Select(i => typeof(I))
);
Если я знаю, что интерфейс «Я» предоставляет свойство «P», а также о том, что классы А и В могут быть отнесены к Р ; как явным образом заявляю, что первая коллекция типов из вызова AllTypes должна иметь свойство P, заданное типом с идентификатором «foo», а вторая коллекция должна иметь то же свойство, что и тип с идентификатором «foobar «?
Использование конфигурации XML это может быть сделано путем явной настройки параметров с использованием нотации $ {id}. Я предполагаю, что он похож на свободный API.
Спасибо.
Вы правы - я не уверен, если это идеальное поведение со стороны беглого регистрации - возможность для переопределения предыдущей конфигурации удобно в некоторых сценариях, но, вероятно, в большинстве случаев это немного неожиданно! – Bittercoder