我在几个代码示例中看到人们使用IKernel
而不是IWindsorContainer
。为什么是这样?
在上面的例子中,它来咬我,因为我添加了一个subresolver
Container.Kernel.Resolver.AddSubResolver(
new CollectionResolver(Container.Kernel, true));
这将允许我注入集合......但它没有工作。我发现因为只使用IKernel
它不能使用温莎的全部功能。为什么有人想要在整个容器上使用内核?我想如果您打算实施Windsor,请使用完整的容器。我错了吗?为什么呢?
答案 0 :(得分:19)
有历史原因。最初Castle项目有两个容器:MicroKernel(IKernel
)提供所有基本功能和扩展点,Windsor IWindsorContainer
是MicroKernel的包装提供附加功能(如XML配置,代理等)和正在包装MicroKernel。
后来(在v2.5中)合并为单个项目/程序集,但为了避免破坏现有用户,保留了区别。