现在的位置: 首页 > 综合 > 正文

利用Ninject实现依赖注入

2012年11月23日 ⁄ 综合 ⁄ 共 561字 ⁄ 字号 评论关闭

与其手动费时费力地实现,不如利用Ninject方便的实现我们的需求。

Ninject如何将你需要的类型返回给你


拿前面的例子,士兵类:

 1 class Samurai 
 2 {
 3     readonly IWeapon weapon;
 4     public Samurai(IWeapon weapon) 
 5     {
 6         this.weapon = weapon;
 7     }
 8 
 9     public void Attack(string target) 
10     {
11         this.weapon.Hit(target);
12     }
13 }

而Ninject希望这样获取具体的士兵类:

IKernel kernel = new StandardKernel();
var samurai = kernel.Get<Samurai>();

Ninject会利用构造函数获取Samurai的实例,但Samurai的构造函数中包含一个IWeapon接口,而IWeapon接口是不可以实例化的。Ninject采用的方式是,typebinding,

typebinding是将具体的类和要实现的接口(抽象类)进行绑定的技术。就这个例子来说,

Ninject会这样实现:

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

这句代码的意思是,当Ninject碰到需要实例化IWeapon接口的时候,它会实例出Sword对象以满足IWeapon的需要。

抱歉!评论已关闭.