背景

在.Net平台中,几乎所有的Ioc容器在注册方面都不一致,使用Unity需要注意几个事项,咱们通过实验进行验证一下。

验证的内容:

  1. 集合的获取。
  2. 生命周期管理。

实验

代码

 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 using Microsoft.Practices.Unity;8 9 namespace UnityStudy
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             UnityContainer container = new UnityContainer();
16
17             container.RegisterType<ITest, Test>(new PerThreadLifetimeManager());
18             container.RegisterType<ITest, TestA>("A");
19             container.RegisterType<ITest, TestB>("B");
20             container.RegisterType<ITest, Test>("C");
21             container.RegisterType<Test, Test>();
22             container.RegisterType<IOther, Test>();
23
24             Console.WriteLine(container.ResolveAll<ITest>().Count());
25             //输出:3
26
27             Console.WriteLine(container.Resolve<ITest>().GetHashCode());
28             Console.WriteLine(container.Resolve<ITest>().GetHashCode());
29
30             Console.WriteLine(container.Resolve<Test>().GetHashCode());
31             Console.WriteLine(container.Resolve<Test>().GetHashCode());
32
33             Console.WriteLine(container.Resolve<IOther>().GetHashCode());
34             Console.WriteLine(container.Resolve<IOther>().GetHashCode());
35             //输出:上边六行输出内容一样
36
37             Console.WriteLine(container.ResolveAll<ITest>().Last().GetHashCode());
38             Console.WriteLine(container.ResolveAll<ITest>().Last().GetHashCode());
39             //输出:输出两行完全不一样
40         }
41     }
42
43     public interface ITest { }
44
45     public interface IOther { }
46
47     public class Test : ITest, IOther { }
48
49     public class TestA : ITest { }
50
51     public class TestB : ITest { }
52 }

输出

结论

  1. ResolveAll只返回命名注册。
  2. 生命周期和具体类型+注册的名字有关系。

备注

使用Unity获取具体类型是不用注册的,有些Ioc容器要求所有类型都必须先注册才能获取。

Enterprise Library:Unity的几个注意事项相关推荐

  1. 最新版 Enterprise Library 企业库 V4.1 中文学习手册

    Enterprise Library for .Net Framework 3.5 – EntLib v4.1 是patterns & practices 小组为.NET Framework ...

  2. Enterprise Library 4.0简介及改进

    Enterprise Library简介 Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise ...

  3. Enterprise Library深入解析与灵活应用(3):倘若将Unity、PIAB、Exception Handling引入MVP模式.. .. .....

    最近在做一个Smart Client Software Factory的项目.熟悉SCSF或者CAB的都应该很清楚MVP这种设计模式.MVP是MVC的一种变体,View和Mode分别关注于UI的呈现和 ...

  4. 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2

    微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2,具体可参看InfoQ的新闻http://www.infoq.com/cn/n ...

  5. 微软发布Enterprise Library 4.1和Unity 1.2

    说明 微软模式与实践团队今天发布了Enterprise Library 4.1和Unity 1.2版本,这次发布的主要新特性如下: 1. 支持Visual Studio 2008 SP1 2. Uni ...

  6. Enterprise Library 5.0发布

    Microsoft Enterprise Library 5.0是一套可重用的应用程序块,帮助开发人员进行企业应用开发.包括:Caching Block.Cryptography Block.Data ...

  7. 《Enterprise Library深入解析与灵活应用》博文系列汇总

    Enterprise Library是微软P&P部门开发的众多Open source框架中的一个,最新的版本已经出到了4.1.由于接触Enterprise Library已经有很长的一段时间, ...

  8. Enterprise Library 5.0 开发向导- 简介(1)

    Enterprise Library 5.0 开发向导- 简介(1) 微软企业库 Enterprise Library 5.0 正式发布!!! 在基于微软.NET 框架开发的应用程序中,无论是企业级的 ...

  9. Enterprise Library 4.0

    微软发布了支持Visual Studio 2008的新版本Enterprise Library 4.0,同时也发布了他们的依赖注入容器Unity应用程序块的1.1版本. 模式与实践团队的产品经理Gri ...

最新文章

  1. Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)
  2. 奥巴马经济顾问:哪怕丢了“饭碗”,也必须加大投资AI!
  3. ABB SocketReceive 套接口 函数
  4. php项目安装器,php服务器环境安装及项目搭建
  5. 红帽正式宣布发布JBoss BPM Suite 6和JBoss BRMS 6
  6. 释放囚犯(洛谷-P1622)
  7. jQuery.extend函数
  8. uni-app简单实现手写签名
  9. python模拟按键_Python在windows下模拟按键和鼠标点击代码
  10. IDEA 修改全文搜索快捷键
  11. 胡适致迷茫大学生:成不在一时,功必不唐捐
  12. 中央电教馆虚拟实验服务器,中央电化教育馆中小学虚拟实验试点工作启动暨培训会侧记...
  13. 计算机网络基础(理论知识全)
  14. ERP规范正式实施 信息化可以对症下药?(转)
  15. 读取经纬度坐标并存储为字典格式,即key为ID,value为轨迹点
  16. [html] 写一个鼠标跟随的特效
  17. Leetcode41.First Missing Positive
  18. 【笔记本】解决键盘粘键 -/- 按键自动输入
  19. 谷歌的招聘 (20分)
  20. 【资料整理】BGL中的BFS算法使用

热门文章

  1. 1040. Airline Company
  2. layui fixbar 返回顶部_卖在顶部(四)
  3. android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...
  4. php5 mysql 源_thinkphp6:访问多个mysql数据源(thinkphp6.0.5 / php 7.4.9)
  5. 运行php web文件路径,php的web路径获取
  6. wordpress直接处理$_post_实战:Drupal迁移到WordPress
  7. 条形图设置颜色Java_java – 如何在条形图中显示每个条形的条形值?
  8. mac系统升级 brew 是用不了_MAC平台10款效率工具推荐
  9. 面试 restful_RESTful Web服务面试问题
  10. lighttpd安装_如何在Ubuntu服务器上安装Lighttpd