Castle Windsor CollectionResolver: Почему он не работает на вызовах Resolve?

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

7
задан Sebastian Good 3 May 2011 в 05:22
поделиться