我在几个代码示例中看到人们使用过IKernel
而不是使用IWindsorContainer
。为什么是这样?
这是一个例子:http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx 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
正在使用它无法使用温莎的全部功能。为什么有人想要使用内核而不是整个容器?我认为如果你要实现 Windsor,请使用完整的容器。我错了吗?为什么?
这是有历史原因的。最初 Castle 项目有两个容器:MicroKernel (IKernel
)提供了所有基本功能和扩展点,而 WindsorIWindsorContainer
它是 MicroKernel 的包装器,提供附加功能(如 XML 配置、代理等),并且包装了 MicroKernel。
这些后来(在 v2.5 中)合并到一个项目/程序集中,但为了避免破坏现有用户,保留了区别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)