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

转载于:https://www.cnblogs.com/jams742003/archive/2010/01/16/1649090.html

Ninject(二)——Modules和Kernel相关推荐

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

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

  2. 十二、Hi3556移植RTL8189 WIFI驱动

    Hi3556V200从代理拿到的SDK包中,是不包含RTL8189模块的驱动的.我们从某WIFI模块厂家要到了RTL8189的芯片驱动,于是开始着手移植驱动到平台上面. 一.Linux驱动添加RTL8 ...

  3. 编译kernel外部模块

    编译kernel外部模块 一.说明 二.编译外部模块 条件 语法 三.编译脚本 编写脚本 脚本的几种实现方式 四.编译包含头文件 kernel头文件放置规则 不同情况,头文件的使用 五.编译安装目录( ...

  4. 第二十二章 核心与核心模块

    谈完了整个启动的流程,您应该会知道,在整个启动的过程当中, 是否能够成功的驱动我们主机的硬件配备, 是核心 (kernel) 的工作! 而核心一般都是压缩档,因此在使用核心之前,就得要将他解压缩后, ...

  5. linux kernel 配置(部分) 部分内容翻译自内核帮助文档

    linux kernel 2.6.13 在配置内核前,你应当对详细的了解运行内核的系统,根据自己的需要配置内核. 下面,我将解释内核的各个选项,并根据本人的机器作相应的配置. 在此之前,我把机器硬件参 ...

  6. 编写一个简单的linux kernel rootkit

    一.前言 linux kernel rootkit跟普通的应用层rootkit个人感觉不大,个人感觉区别在于一个运行在用户空间中,一个运行在内核空间中:另一个则是编写时调用的API跟应用层rootki ...

  7. 台湾大学林轩田机器学习技法课程学习笔记3 -- Kernel Support Vector Machine

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了SVM的对偶形式,即dual SVM.Dual SVM也是一个二次规划问题,可以用QP来进行求解.之所以要推导SVM的对偶形式 ...

  8. build linux kernel

    一.首先安装toolchains 1. download Linaro toolchains Linaro toolchains是由 Linaro 公司基于GCC推出的的ARM交叉编译工具.可用于交叉 ...

  9. EDUP的EP-N8508GS在raspi上使用(二)

    继<EDUP的EP-N8508GS在raspi上使用> 先写一下编译外部驱动模块的大概步骤. 第一阶段--前奏,解决用到内核源文件及相关配置文件的问题: 编译外部驱动模块要使用到内核源文件 ...

最新文章

  1. JSON.parse解析特殊字符报错解决方案
  2. Code:blocks 调试经历,调试成功这其一
  3. Python学习三——列表
  4. RabbitMQ RPC远程调用模式
  5. VTK:IO之ImageReader2Factory
  6. 最长递增子序列的个数Python解法
  7. 助老打车暖心车站落地杭州 帮助老年人扫码一键叫车
  8. 计算机网络系统是弱电工程,弱电工程包括哪些类型?常见的问题又有哪些?
  9. mobi格式电子书_这几种电子书格式的关系与区别,资深Kindler有必要了解了解 !...
  10. php dvws,phpstudy配置dvwa——sql注入、xss攻击练习
  11. oracle Fusion Applications 简介 (Oracle融合管理软件简介)
  12. oracle获取字符串长度函数length()和hengthb()
  13. 不花一分钱申请免费域名和ssl证书
  14. flink yarn模式HA部署
  15. 襄阳市2022年高新技术企业申报奖励补贴以及认定条件汇总!
  16. yield()函数的使用
  17. mo和po文件相互转化
  18. loginrequired注解_required
  19. 神经平面分布图怎么看,面部神经网络 分布图
  20. linux 查找文件命令

热门文章

  1. Java中static的作用详解_java中static作用详解
  2. XML指南——XML 确认
  3. 回流,重绘的概念,以及他们的区别?
  4. html以及css的部分相关内容及运用
  5. Python学习笔记-2017.5.4thon学习笔记-2017.8.14
  6. Eclipse 创建web项目后没有 Java EE 5 Library,没有web开发相关基础java包,myeclipse中有。...
  7. 小D学blend-----优美简洁的mp3播放器
  8. UA MATH567 高维统计IV Lipschitz组合2 Spherical Distribution的Lipschitz函数 Isoperimetric不等式
  9. UA MATH563 概率论的数学基础 中心极限定理23 概率测度族的紧性
  10. 修改.fig文件中图的x轴或y轴的标题及数据图