为什么使用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被使用,它不能使用温莎的全部功能。为什么有人会想要在整个容器上使用内核呢?我认为如果你要实现温莎,使用完整的容器。我错了吗?为什么?

为什么使用IKernel而不是IWindsorContainer ?

这有历史原因。最初Castle项目有两个容器:MicroKernel (IKernel),它提供了所有的基本功能和扩展点;Windsor IWindsorContainer,它是MicroKernel的包装器,提供了额外的功能(如XML配置,代理等),并包装了MicroKernel。

它们后来(在v2.5中)合并为一个单独的项目/程序集,但为了避免破坏现有用户,保留了区别。

相关文章:
  • 没有找到相关文章