Я добавил CollectionResolver
в качестве под-резольвера моего ядра Windsor, и он будет правильно внедрять наборы зависимостей от разрешенных объектов. То есть, если у меня есть
class X { public X(IComponent[] components) { ... } }
container.Register(/* lots of IComponents */);
container.Register(Component.For<X>());
аргумент components
для конструктора создается правильно, когда я его разрешаю
container.Resolve<X>()
но если бы вместо этого я просто хотел получить список самих компонентов,
container.Resolve<IComponent[]>()
Я получаю исключение ComponentNotFound
с жалобой на то, что я не зарегистрировал никаких компонентов для IComponent[]
. Я нахожу эту асимметрию противоречивой, поскольку не уверен, почему ядро должно действовать иначе, когда оно разрешает зависимости, которые оно обнаруживает в конструкторах / свойствах, по сравнению с тем, когда оно разрешает зависимости, которые его пользователь хотел бы разрешить.