Ninject(二)——Modules和Kernel
很多的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相关推荐
- Ninject依赖注入——构造函数、属性、方法和字段的注入(三)
1.Ninject简介 Ninject是基于.Net平台的依赖注入框架,它能够将应用程序分离成一个个高内聚.低耦合(loosely-coupled, highly-cohesive)的模块,然后以一种 ...
- 十二、Hi3556移植RTL8189 WIFI驱动
Hi3556V200从代理拿到的SDK包中,是不包含RTL8189模块的驱动的.我们从某WIFI模块厂家要到了RTL8189的芯片驱动,于是开始着手移植驱动到平台上面. 一.Linux驱动添加RTL8 ...
- 编译kernel外部模块
编译kernel外部模块 一.说明 二.编译外部模块 条件 语法 三.编译脚本 编写脚本 脚本的几种实现方式 四.编译包含头文件 kernel头文件放置规则 不同情况,头文件的使用 五.编译安装目录( ...
- 第二十二章 核心与核心模块
谈完了整个启动的流程,您应该会知道,在整个启动的过程当中, 是否能够成功的驱动我们主机的硬件配备, 是核心 (kernel) 的工作! 而核心一般都是压缩档,因此在使用核心之前,就得要将他解压缩后, ...
- linux kernel 配置(部分) 部分内容翻译自内核帮助文档
linux kernel 2.6.13 在配置内核前,你应当对详细的了解运行内核的系统,根据自己的需要配置内核. 下面,我将解释内核的各个选项,并根据本人的机器作相应的配置. 在此之前,我把机器硬件参 ...
- 编写一个简单的linux kernel rootkit
一.前言 linux kernel rootkit跟普通的应用层rootkit个人感觉不大,个人感觉区别在于一个运行在用户空间中,一个运行在内核空间中:另一个则是编写时调用的API跟应用层rootki ...
- 台湾大学林轩田机器学习技法课程学习笔记3 -- Kernel Support Vector Machine
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了SVM的对偶形式,即dual SVM.Dual SVM也是一个二次规划问题,可以用QP来进行求解.之所以要推导SVM的对偶形式 ...
- build linux kernel
一.首先安装toolchains 1. download Linaro toolchains Linaro toolchains是由 Linaro 公司基于GCC推出的的ARM交叉编译工具.可用于交叉 ...
- EDUP的EP-N8508GS在raspi上使用(二)
继<EDUP的EP-N8508GS在raspi上使用> 先写一下编译外部驱动模块的大概步骤. 第一阶段--前奏,解决用到内核源文件及相关配置文件的问题: 编译外部驱动模块要使用到内核源文件 ...
最新文章
- JSON.parse解析特殊字符报错解决方案
- Code:blocks 调试经历,调试成功这其一
- Python学习三——列表
- RabbitMQ RPC远程调用模式
- VTK:IO之ImageReader2Factory
- 最长递增子序列的个数Python解法
- 助老打车暖心车站落地杭州 帮助老年人扫码一键叫车
- 计算机网络系统是弱电工程,弱电工程包括哪些类型?常见的问题又有哪些?
- mobi格式电子书_这几种电子书格式的关系与区别,资深Kindler有必要了解了解 !...
- php dvws,phpstudy配置dvwa——sql注入、xss攻击练习
- oracle Fusion Applications 简介 (Oracle融合管理软件简介)
- oracle获取字符串长度函数length()和hengthb()
- 不花一分钱申请免费域名和ssl证书
- flink yarn模式HA部署
- 襄阳市2022年高新技术企业申报奖励补贴以及认定条件汇总!
- yield()函数的使用
- mo和po文件相互转化
- loginrequired注解_required
- 神经平面分布图怎么看,面部神经网络 分布图
- linux 查找文件命令
热门文章
- Java中static的作用详解_java中static作用详解
- XML指南——XML 确认
- 回流,重绘的概念,以及他们的区别?
- html以及css的部分相关内容及运用
- Python学习笔记-2017.5.4thon学习笔记-2017.8.14
- Eclipse 创建web项目后没有 Java EE 5 Library,没有web开发相关基础java包,myeclipse中有。...
- 小D学blend-----优美简洁的mp3播放器
- UA MATH567 高维统计IV Lipschitz组合2 Spherical Distribution的Lipschitz函数 Isoperimetric不等式
- UA MATH563 概率论的数学基础 中心极限定理23 概率测度族的紧性
- 修改.fig文件中图的x轴或y轴的标题及数据图