Подтвердить что ты не робот

Зачем использовать IKernel для IWindsorContainer?

Я видел несколько примеров кода, в которых люди использовали IKernel, а не использовали IWindsorContainer. Почему это?

Вот один пример: http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx

В приведенном выше примере мне пришлось укусить меня, потому что я добавил subresolver

Container.Kernel.Resolver.AddSubResolver(
        new CollectionResolver(Container.Kernel, true));

который позволит мне вводить коллекции... но все же он не работал. Я понял, что, поскольку использовался только IKernel, он не мог использовать полные возможности Windsor. Почему кто-то хочет использовать Ядро над полным контейнером? Я думаю, что если вы собираетесь внедрять Windsor, используйте полный контейнер. Я ошибаюсь? Почему?

4b9b3361

Ответ 1

Есть исторические причины для этого. Первоначально проект Castle состоял из двух контейнеров: MicroKernel (IKernel), который обеспечивал все базовые функциональные возможности и точки расширения, а Windsor IWindsorContainer, который был оберткой вокруг MicroKernel, предоставляющей дополнительные функции (такие как конфигурация XML, прокси и т.д.) И обертывал MicroKernel.

Те были позже (в версии 2.5) объединены в один проект/сборку, но чтобы не нарушать существующих пользователей, различие сохранялось.