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

转载于:https://www.cnblogs.com/kfx2007/archive/2013/06/06/3120580.html

利用Ninject实现依赖注入相关推荐

  1. laravel mysql注入_laravel中如何利用反射实现依赖注入

    依赖注入 在一个类中经常会依赖于其他的对象,先看一下经典的写法 class Foo { public $bar; public function __construct() { $this->b ...

  2. 在MVC3项目中结合NInject实现依赖注入

    解释: 依赖注入:(Dependency Injection),也称之为控制反转. 大致意思就是,让我们的应用程序所依赖的一些外部服务,可以根据需要动态注入,而不是预先在应用程序中明确的约束.这种思想 ...

  3. ASP.NET MVC3 + Ninject.Mvc3 依赖注入原来可以这么简单

    第一步.新创建一个 ASP.NET MVC3 工程. 第二步.通过 NuGet 控制台直接输入命令:install-package Ninject.Mvc3 安装完这个源码包之后,所有的依赖注入框架已 ...

  4. Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)

    在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...

  5. Ninject依赖注入——构造函数、属性、方法和字段的注入(三)

    1.Ninject简介 Ninject是基于.Net平台的依赖注入框架,它能够将应用程序分离成一个个高内聚.低耦合(loosely-coupled, highly-cohesive)的模块,然后以一种 ...

  6. Java依赖注入(DI)实例详解

    Java依赖注入模式允许我们摆脱硬编码,使我们的应用更加松耦合.增强扩展性以及可维护性.通过依赖注入我们可以降低从编译到运行时的依赖性. Java依赖注入 Java的依赖注入仅仅通过理论是很难解明白的 ...

  7. 《Pro ASP.NET MVC 3 Framework》学习笔记之五【依赖注入及ninject工具使用】

    一,创建松耦合的组件 1."分解关注点"是MVC模式里面一个非常重要的特性.我们想要在应用程序里面创建的组件尽可能的独立,这样我们就能管理比较少的依赖关系.理想情况下,每个组件都是 ...

  8. 依赖注入(DI)和Ninject,Ninject

    我们所需要的是,在一个类内部,不通过创建对象的实例而能够获得某个实现了公开接口的对象的引用.这种"需要",就称为DI(依赖注入,Dependency Injection),和所谓的 ...

  9. 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行

    利用抽象工厂创建DAO.利用依赖注入去除客户端对工厂的直接依赖.将有关Article的各种Servlet全部封装到一个Servlet中(通过BaseServlet来进行ArticleServlet方法 ...

最新文章

  1. Oracle RBA(Redo Byte Address) 说明
  2. 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。...
  3. 英特尔核芯显卡控制面板怎么找不到_【全球首发】英特尔第十代Cometlake台式机处理器详解与评测...
  4. 为什么下拉框拉不下来_为什么体重降不下来?4个饮食方法降低热量摄入,让体重降下来...
  5. 06.德国博士练习_08_query_dsl
  6. 美一8岁华裔男童体育课上头部重伤 家长吁调查
  7. Java RandomAccessFile seek()方法与示例
  8. Oracle 查看表空间大小及其扩展
  9. Python全栈开发之11、进程和线程
  10. “我要彻底放弃 Debian 操作系统!”
  11. WordPress搬家插件迁移网站的方法(从一台服务器搬到另一台服务器)
  12. SQL注入漏洞与参数化查询
  13. 【Android开发】消息提示框与对话框-使用AlertDialog创建对话框
  14. centos7 ies4linux,Ubuntu 7.10中通过IEs4linux安装IE6
  15. apksigner --> apk签名工具
  16. 局域网添加DNS服务器进行域名解析
  17. 前端利用正则对手机号码,身份证号,姓名进行脱敏处理
  18. 根据起始日期、起始时间、终止日期、终止时间计算年数
  19. 固定资产减值准备、累计折旧
  20. 王道OS-磁盘存储器管理

热门文章

  1. halcon裁剪图像_Halcon学习之七:改变图像的现实方式和大小
  2. php 数组重复最多,PHP获取数组中重复最多元素的简单示例
  3. mysql数据库的函数_详解数据库_MySQL: mysql函数
  4. 英文材质翻译表_英语翻译5大技巧,用了才知道是真好
  5. opengl 实时波形显示_OpenGL1------OpenGL概述
  6. html中滤镜的效果图,CSS滤镜之Mask属性-网页设计,HTML/CSS
  7. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
  8. 用随机投点法计算pi值matlab,用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x,y),然后根据x...
  9. 双向关联一对一映射详解(2)
  10. c语言实现1024点fft程序,C语言1024点快速傅里叶变换(FFT)程序,最好经过优化,执行速度快...