У меня есть фабрика, которая принимает в конструкторе IEnumerable<IPredicate>
.Моя заводская подпись выглядит следующим образом.
public ServiceFactory(IEnumerable<IPredicate> predicates)
А вот мой код регистрации в Виндзоре.
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, false));
container.Register(Component
.For<IServiceFactory>()
.ImplementedBy<ServiceFactory>());
container.Register(AllTypes.
FromThisAssembly().
BasedOn<IPredicate>().
WithService.AllInterfaces());
container.Register(Component
.For<IEnumerable<IPredicate>>());
Виндзор вызывает исключение, когда я разрешаю IServiceFactory
, потому что он говорит, что я незарегистрированный параметр конструктора predicates
.Но, как вы видите, третий компонент, который я регистрирую, говорит о том, что я не зарегистрировался.
Исключение составляет:
Keys (components with specific keys)
- predicates which was not registered.
Чего мне не хватает?
Странно то, что я изначально написал этот код в отдельном проекте и импортировал его в свой производственный проект.Возможно ли, что у меня есть другой установщик, мешающий этому?
Я использую Castle Windsor v2.5.1.0.