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

标签 c# dependency-injection castle-windsor ioc-container

我在几个代码示例中看到人们使用 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));

这将允许我注入(inject)集合...但是它没有用。我发现因为只使用了 IKernel,所以它无法使用 Windsor 的全部功能。为什么有人想要在整个容器上使用内核?我认为如果您要实现 Windsor,请使用完整的容器。我错了吗?为什么?

最佳答案

这是有历史原因的。 CaSTLe 项目最初有两个容器:MicroKernel (IKernel) 提供所有基本功能和扩展点,Windsor IWindsorContainer 是 MicroKernel 的包装器,提供附加功能(如 XML配置、代理等)并包装微内核。

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

关于c# - 为什么使用 IKernel 而不是 IWindsorContainer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6795560/

相关文章:

c# - Windows 8.1 和 Windows Phone 8 中的语音识别

c# - 我可以从中央文件设置 C# 预处理器指令吗?

c# - 在 monoTouch 中格式化大量数据

c# - EF6 DbContext IOC 依赖

php - 如何在 Yii2 中将接口(interface)注入(inject) Controller 的构造函数

.net - 使用 CaSTLe AutoTx Facility 和 NHibernate Facility 的交易

c# - 如何在温莎城堡中自动注册(按照惯例)通用装饰器

c# - 我能以某种方式整理这个(过度使用吗?)泛型?

java - 构造函数注入(inject)在 Servlet + WELD + Tomcat 中不起作用

asp.net-mvc - CaSTLe Windsor 3.1 PerWebRequestLifestyleModule 配置