最新被阅读
· Unity依赖注入容器 [Asp.net]
· 为什么主流Java MVC框架如此难以使用 [Jsp/Servlet]
· 央视连续曝光谷歌中国传播色情和低俗信息 [闲谈]
· js判断浏览器的版本和类型 [Javascript]
· 帮帮忙解决一下!------ [Windows]
· 怎样弹出无边框窗口?没有标题栏和兰色边框的那种? [Asp.net]
· 请问有会用delphi工具开发的吗 [常用软件]
· Hibernate 3.3:重新设计、模块化JARS及重构的缓存系统 [Hibernate]
· 忘记了mysql密码,进不去了. [MySql]
· 抓取去除重复行? [Hibernate]

活动用户
· 新闻转播
· JavaSE
· soft
· 云中漫步
· 呼呼
· 学生问题
· 青软学生
· wen
· wuming
· Jack Lee(海洋)

社区信息
用户数量:1780
在线用户:0/15
文章数量:2783
问题数量:2686

反向链接
 http://www.google.cn/searc
 http://proveedores.blogete
 http://www.baidu.com/s?wd=
 http://zhidao.baidu.com/qu
 http://tieba.baidu.com/f?k
 http://www.google.cn/searc
 http://www.google.cn/searc
 http://aimtrust.com/aim/r/
 http://www.google.cn/searc
 http://www.baidu.com/s?wd=
 http://zhidao.baidu.com/qu
 http://jobs.zhaopin.com/P2
 http://googleads.g.doublec
 http://googleads.g.doublec

赞助商链接
青软培训-软件培训专家
您的位置:首页文章.NetAsp.netUnity依赖注入容器
青岛青软职业培训学校 专业软件培训机构
.Net: 全部  |  C#  |  Asp.net  |  VB.net  |  框架
Unity依赖注入容器 [Asp.net]
发布: softworker 时间:2009-03-31 12:31:14 浏览:646 回复/评论:0

  ObjectBuilder是一个可扩展的Application Block,同时也是Unity的基础。对于ObjectBuilder到底是什么有很多不同的理解,最普遍的描述是:ObjectBuilder是“依赖注入的工具”,还有一种说法是“构建依赖注入容器的框架”,这些多少都有些出入。应该说ObjectBuilder是一个可配置的对象工厂。

  ObjectBuilder有两个版本,习惯称之为OB1和OB2。OB1在ObjectBuilder的网站上就可以down,OB2可以说目前只流传于民间:)为什么这么说?因为目前只能从Unity的CTP版本中或者sample中得到,估计是会跟随Unity的Release一块儿发布。

  对于OB1,黄忠成先生的Object Builder Application Block系列写得清晰透彻,当然,经过吕震宇先生的简体翻译:[转]Object Builder Application Block,可读性更上一层楼了。

  OB2在OB1的基础上可以说有了很大的改动,这里可以参考Chris的最新的一些blog,顺带说一句,这些blog读起来就要费些脑筋了,如果你不是真的想对ObjectBuilder弄个门清的话,那其实理解一下黄忠成先生文章中提到的一些概念和思想就足够了。

    Unity是什么?

  Unity是patterns & practices团队开发的一个轻量级、可扩展的依赖注入容器,具有如下的特性:

  1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例。

  2. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能。在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method call injection(方法注入)。ps:这里的方法注入与Martin Fowler定义的接口注入类似而稍有区别。

  3. 支持容器的体系结构。一个容器可以有子容器,允许从子容器到父容器的对象定位查询。

  4. 可以通过配置文件进行准备和配置容器。

  5. 不会影响到类的定义(属性设值注入和方法注入除外),这也是轻量级容器的一个体现。

  6. 支持自定义的容器扩展。

  
   使用Unity,最基本步骤有三步。

  1. 建立容器;

  2. 将接口与类的映射注册到容器中;

  3. 从容器中解析出正确的对象。

 

      例子:

  Step0. 准备工作

  ILogger接口:

Unity(三):快速入门  

  ConsoleLogger类:

Unity(三):快速入门  

  NullLogger类:

Unity(三):快速入门

  Step1. 创建容器

  在Unity中创建容器实例最简单的方法是直接使用构造函数创建,如下代码所示:

  IUnityContainer container = new UnityContainer();

  Step2. 注册接口映射

  在Unity中提供了一组Register方法供我们在容器中注册接口映射,如下代码所示:

  container.RegisterType<ILogger, ConsoleLogger>();

  Step3. 获取对象实例

  在Unity中提供了一组Resolve方法用以获取对象实例,如下代码所示:

  ILogger logger = container.Resolve<ILogger>();

  OK,就这么简单!

  测试:

Unity(三):快速入门

  场景一:注册一个ConsoleLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。

Unity(三):快速入门

  结果:

Unity(三):快速入门

  场景二:注册一个NullLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。

Unity(三):快速入门

  结果:

Unity(三):快速入门

青软培训-开始快乐的IT人生  咨询热线0532-85025005
您没有登录,不能回复(评论)。请您先登录

努力让生活更美丽!
鲁ICP备字080008353号
报名热线:0532-85025005(脱产班报名)  85025115(业余班报名)
青岛青软职业培训学校主办  地址:青岛市香港中路20号黄金广场北楼(市政府对面)  Copyright © 2008