C# 为什么使用IKernel而不是IWindsorContainer?

C# 为什么使用IKernel而不是IWindsorContainer?,c#,dependency-injection,castle-windsor,ioc-container,C#,Dependency Injection,Castle Windsor,Ioc Container,我在几个代码示例中看到,人们使用IKernel而不是IWindsorContainer。为什么会这样 以下是一个例子: 在上面的例子中,它咬了我一口,因为我添加了一个子解析器 Container.Kernel.Resolver.AddSubResolver( new CollectionResolver(Container.Kernel, true)); 这将允许我注入集合。。。但它并没有起作用。我发现,因为仅仅使用了IKernel,它就无法使用温莎的全部功能。为什么有人想要在

我在几个代码示例中看到,人们使用
IKernel
而不是
IWindsorContainer
。为什么会这样

以下是一个例子:

在上面的例子中,它咬了我一口,因为我添加了一个子解析器

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

这将允许我注入集合。。。但它并没有起作用。我发现,因为仅仅使用了IKernel,它就无法使用温莎的全部功能。为什么有人想要在完整的容器上使用内核?我认为如果你要实施温莎,使用完整的容器。我错了吗?为什么?这是有历史原因的。Castle项目最初有两个容器:MicroKernel(
IKernel
),它提供所有基本功能和扩展点;Windsor
IWindsorContainer
,它是MicroKernel的包装器,提供附加功能(如XML配置、代理等)并包装MicroKernel


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

感谢历史记录。所以我假设,如果我说我使用的是温莎,我真的不需要使用IKernal,除非我使用的是特别需要旧IKernel的东西?IKernel是自动注册的,但IWindsorContainer不是吗?有点
IKernel
作为依赖项OOTB提供,而IWindsorContainer则不是,因为它是面向用户的界面