Ninject IOC<一>
来源:互联网 发布:淘宝退货谁承担运费 编辑:程序博客网 时间:2024/04/29 16:24
什么是Ninject
Ninject是一套.Net平台下的高效,超轻量级的依赖注入库。它可以帮助你实现应用程序的松耦合,高内聚,同时也能很灵活的把它们进行组合在一起。借助与Ninject的帮助,代码的使用,复用,测试和修改变得异常的简单。
为什么使用Ninject
既然在.Net平台下依赖注入已经很普遍,同时也已经有了好几个依赖注入库。为什么我们还要另外编写一套呢?
首先,目前其他框架依赖于XML配置文件,通过配置文件去引导框架的组件的工作,这将带来以下不足:
1. 配置文件会很长,并且很冗余,因为你必须为每一个类型重复性的去写他得描述信息;
2. 一个简单的配置错误就会导致整个工程的瘫痪;
对比而言,Ninject使用一种更方便的接口去生命类型绑定。例如,如果你需要一个Iservice实例,那么会友一个ServiceImpl的实例被返回:
C#:
Bind<IService>().To<ServiceImpl>();
第二点,其他框架是很庞大的类库,那么意味着库还依赖于其他库,这对于小型的系统而言就会产生“框架膨胀”的问题。
第三点,Ninject提出了一种异常强大并且灵活的“上下文绑定”技术。类比简单的字符串绑定,Ninject能感知环境,并且能根据不同的运行环境实现不同的接口。例如:
C#:
1 Bind<IService>().To<RedImpl>().Only(When.Context.Target.HasAttribute<RedAttribute>());
2
3 Bind<IService>().To<BlueImpl>().Only(When.Context.Target.HasAttribute<BlueAttribute>());
4 class ConsumerA {
5 public ConsumerA([Red] IService service) {
6 // The "service" argument will be an instance of RedImpl.
7 }
8 }
9 class ConsumerB {
10 public ConsumerB([Blue] IService service) {
11 // The "service" argument will be an instance of BlueImpl.
12 }
13 }
需要注意的一点:在代码内定义反射,会带来一旦编译完成就不能修改配置。所以这个框架不会代替配置文件。
最主要的,这还得看个人爱好,如果你喜欢XML文件去定义类型反射,那么你可以使用其他基于XML配置的IOC类库。
下期请关注:什么是手动注入,Ninject如何注入
0 0
- Ninject IOC<一>
- 面向对象<一>
- C# 多线程---------<一>
- C++学习笔记<一>
- silktest 技巧积累<一>
- 用例建模指南<一>
- ><
- 轻量级IOC框架:Ninject
- 轻量级IOC框架:Ninject
- 推荐<<步步为赢--软件测试管理全程实践>>一书
- Hadoop平台优化综述(一) <转>
- LoadRunner脚本编写<一>-- 检查点…
- Web系统的测试方法<一>
- qtp 问题汇总(不断更新)<一>
- linux启动流程导读(arm为例)<一>
- linux启动流程导读(arm为例)<一>
- Android游戏开发指南<一>背景地图
- <div><span>
- Compile the latest Kernel(linux-3.1-rc4) On Ubuntu Plateform
- 一种B/S模式下基于JAVA反射机制的可伸缩动态加载模块的解决方案
- 基于Pipe的PureMVC Flex框架的多核共享消息技术
- HQL略解
- Android中ListView小知识整理
- Ninject IOC<一>
- Windows Server AppFabric 缓存容量规划指南
- 但还是肯德基啊
- Hibernate&Spring对多数据源、多Schema的支持
- 开源文档管理软件Alfresco Content Management 4.0.c使用方法
- Hibernate系列教程之一(Hibernate结构)
- Hibernate系列教程之二(SessionFactory配置)
- JNA&IOC实现反向动态调用不同dll版本
- ObjectARX2012学习笔记之Autodesk.AutoCAD.Colors Namespace