Why use IKernel over IWindsorContainer?

旧巷老猫 提交于 2019-12-22 03:22:45

问题


I have seen in several code examples where people have used IKernel rather than use IWindsorContainer. Why is this?

Here is one example: http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx

In the above example it came to bite me because I added a subresolver

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

that will allow me to inject collections... but yet it wasnt working. I figured out that because just the IKernel was being used it couldnt use the full features of Windsor. Why would someone ever want to use the Kernel over the full container? I think if you are going to implement Windsor, use the full container. Am I wrong? Why?


回答1:


There are historical reasons for that. Originally Castle project had two containers: MicroKernel (IKernel) which provided all the base functionality and extension points, and Windsor IWindsorContainer which was a wrapper around MicroKernel providing additional features (like XML configuration, proxies etc) and was wrapping the MicroKernel.

Those were later (in v2.5) merged into a single project/assembly but to avoid breaking existing users the distinction was kept.



来源:https://stackoverflow.com/questions/6795560/why-use-ikernel-over-iwindsorcontainer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!