利用Ninject实现依赖注入

与其手动费时费力地实现,不如利用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的需要。

你可能感兴趣的:(inject)