Я добавил 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[]
. Я нахожу эту асимметрию контринтуитивной, поскольку не понимаю, почему ядро должно действовать по-другому, когда оно разрешает зависимости, найденные им в конструкторах/свойствах, по сравнению с тем, когда оно разрешает зависимости, которые хотел бы разрешить пользователь.