很多的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

{

……

}

……

 

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

例:

public override void Load()

{

if (true)

{

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

}

else

{

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

}

Bind<Samurai>().ToSelf();

}

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

posted on 2010-01-16 12:01  梅桦  阅读(856)  评论(0编辑  收藏  举报