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

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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам