为什么使用IKernel而不是IWindsorContainer ?
本文关键字:IWindsorContainer IKernel 为什么 | 更新日期: 2023-09-27 18:03:28
我在几个代码示例中看到人们使用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
被使用,它不能使用温莎的全部功能。为什么有人会想要在整个容器上使用内核呢?我认为如果你要实现温莎,使用完整的容器。我错了吗?为什么?
这有历史原因。最初Castle项目有两个容器:MicroKernel (IKernel
),它提供了所有的基本功能和扩展点;Windsor IWindsorContainer
,它是MicroKernel的包装器,提供了额外的功能(如XML配置,代理等),并包装了MicroKernel。
它们后来(在v2.5中)合并为一个单独的项目/程序集,但为了避免破坏现有用户,保留了区别。