天天看点

Ninject(二)——Modules和Kernel

很多的DI框架中,XML映射文件会快速的增加,而不容易导航。在Ninject中,类型绑定被集中到模块中。每一个模块代表应用程序中的一个独立片段存在。它们可以以你喜欢的方式组织起来。模块只需实现IModule接口,但大多数模块只需简单的从标准模块(StandardModule)派生即可。

例:

public class WarriorModule : StandardModule

{

public override void Load()

Bind<IWeapon>().To<Sword>();

Bind<Samurai>().ToSelf();

}

一旦创建了模块。就可以把这些对象收集到一个叫内核(kernel)的容器中。可以从字面上理解,这个内核是应用程序的核心。调用内核的Get()方法就可以得到一种类型的实例。

以下一个例子来阐述如何创建一个内核,然后激活它和通过它来创建一个类型实例。

IKernel _kernel = new StandardKernel(new WarriorModule());

Samurai sam = _kernel.Get<Samurai>();

sam.Attack("僵尸");

调用Get()方法的结果就是为武士装备了一把剑。因此,调用武士的Attack()方法的结果和以前的结果相同。

可以创建许多模块,然后把它们传到内核的构造器中。

public class Modul_2 : StandardModule

{

……

同样的,要记得模块在应用程序中和其它代码以同样的方式执行。不它不只是限于死绑,可以加上其它的语句,

if (true)

else

Bind<IWeapon>().To<Shuriken>();

 参考原文:

http://ninject.codeplex.com/wikipage?title=Modules%20and%20the%20Kernel&referringTitle=User%20Guide

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

继续阅读