什么是内核(关于依赖注入)?

时间:2010-04-24 19:39:30

标签: dependency-injection terminology

我看到内核使用了很多但我不确定它的意思。你能举个例子吗?

2 个答案:

答案 0 :(得分:2)

内核是容器本身。它在Windsor(实际上是MicroKernel)和Ninject中称为“内核”,因为它仅提供核心注入功能,依赖于包装器(在MicroKernel的情况下,它是WindsorContainer)或模块/扩展方法(在Ninject的情况)提供便利功能(例如,WindsorContainer提供XML配置解析)

答案 1 :(得分:2)

Ninject和其他依赖注入器中的内核是应用程序的核心。它是其他模块的容器。

模块代表应用程序的独立部分。您可以根据自己的需要在代码库结构中自由组织它们。然后通过构造函数将这些模块加载到内核中。 See this page举了一个例子。

内核对象也是负责解析依赖关系和创建新对象的对象。

例如在C#/ .NET的Ninject中,你可以使用内核将接口绑定到它的实现:

IKernel ninjectKernel = new StandardKernel();
ninjectKernel.Bind<IMyFoo>().To<MyFoo>();

然后当您按如下方式创建对象时......

IMyFoo myFoo = ninjectKernel.Get<IMyFoo>;

...由于您刚刚指定的绑定,内核将自动返回类型为MyFoo的实例。

This page更详细地介绍了内核和模块如何组合在一起,以供进一步阅读。来自Ninject的This page也可以提供帮助。