利用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的需要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值