Ninject(二)——Modules和Kernel

简介: 很多的DI框架中,XML映射文件会快速的增加,而不容易导航。在Ninject中,类型绑定被集中到模块中。每一个模块代表应用程序中的一个独立片段存在。它们可以以你喜欢的方式组织起来。模块只需实现IModule接口,但大多数模块只需简单的从标准模块(StandardModule)派生即可。

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

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
Java 应用服务中间件 API
97分布式电商项目 - Tomcat性能优化(运行方式)
97分布式电商项目 - Tomcat性能优化(运行方式)
91 0
|
存储 Apache 索引
Lucene就是这么简单(二)
Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucene在全文检索领域是一个经典的祖先,现在很多检索引擎都是在其基础上创建的,思想是相通的。
170 0
Lucene就是这么简单(二)
|
前端开发 JavaScript
ES6 + Webpack + React + Babel 如何在低版本浏览器上愉快的玩耍(上)
## 起因 某天,某测试说:“这个页面在 IE8 下白屏,9也白。。” 某前端开发: 吭哧吭哧。。。一上午的时间就过去了,搞定了。 第二天,某测试说:“IE 又白了。。” 某前端开发: 吭哧吭哧。。。谁用的 `Object.assign`,出来我保证削不屎你。 ![](https://gw.alicdn.com/tfscom/TB1AR1.LXXXXXaNXpXXXXXX
12728 0
|
应用服务中间件 Linux PHP
yum 6.8 nginx php-fpm
centos6.8 yum安装 php-fpm 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64   配置yum源 追加CentOS 6.5的epel及remi源。
888 0
C语言位运算符:与、或、异或、取反,左移和右移
C语言位运算符:与、或、异或、取反、左移和右移   位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
|
11天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1237 5
|
10天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1217 87