开发者

Why use IKernel over IWindsorContainer?

开发者 https://www.devze.com 2023-03-22 13:41 出处:网络
I have seen in several code examples where people have used IKernel rather than use IWindsorContainer.Why is this?

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?


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消