Enterprise Library:Unity的几个注意事项
背景
在.Net平台中,几乎所有的Ioc容器在注册方面都不一致,使用Unity需要注意几个事项,咱们通过实验进行验证一下。
验证的内容:
- 集合的获取。
- 生命周期管理。
实验
代码
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 }
输出
结论
- ResolveAll只返回命名注册。
- 生命周期和具体类型+注册的名字有关系。
备注
使用Unity获取具体类型是不用注册的,有些Ioc容器要求所有类型都必须先注册才能获取。
Enterprise Library:Unity的几个注意事项相关推荐
- 最新版 Enterprise Library 企业库 V4.1 中文学习手册
Enterprise Library for .Net Framework 3.5 – EntLib v4.1 是patterns & practices 小组为.NET Framework ...
- Enterprise Library 4.0简介及改进
Enterprise Library简介 Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise ...
- Enterprise Library深入解析与灵活应用(3):倘若将Unity、PIAB、Exception Handling引入MVP模式.. .. .....
最近在做一个Smart Client Software Factory的项目.熟悉SCSF或者CAB的都应该很清楚MVP这种设计模式.MVP是MVC的一种变体,View和Mode分别关注于UI的呈现和 ...
- 微软模式与实践团队发布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 ...
- 微软发布Enterprise Library 4.1和Unity 1.2
说明 微软模式与实践团队今天发布了Enterprise Library 4.1和Unity 1.2版本,这次发布的主要新特性如下: 1. 支持Visual Studio 2008 SP1 2. Uni ...
- Enterprise Library 5.0发布
Microsoft Enterprise Library 5.0是一套可重用的应用程序块,帮助开发人员进行企业应用开发.包括:Caching Block.Cryptography Block.Data ...
- 《Enterprise Library深入解析与灵活应用》博文系列汇总
Enterprise Library是微软P&P部门开发的众多Open source框架中的一个,最新的版本已经出到了4.1.由于接触Enterprise Library已经有很长的一段时间, ...
- Enterprise Library 5.0 开发向导- 简介(1)
Enterprise Library 5.0 开发向导- 简介(1) 微软企业库 Enterprise Library 5.0 正式发布!!! 在基于微软.NET 框架开发的应用程序中,无论是企业级的 ...
- Enterprise Library 4.0
微软发布了支持Visual Studio 2008的新版本Enterprise Library 4.0,同时也发布了他们的依赖注入容器Unity应用程序块的1.1版本. 模式与实践团队的产品经理Gri ...
最新文章
- Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)
- 奥巴马经济顾问:哪怕丢了“饭碗”,也必须加大投资AI!
- ABB SocketReceive 套接口 函数
- php项目安装器,php服务器环境安装及项目搭建
- 红帽正式宣布发布JBoss BPM Suite 6和JBoss BRMS 6
- 释放囚犯(洛谷-P1622)
- jQuery.extend函数
- uni-app简单实现手写签名
- python模拟按键_Python在windows下模拟按键和鼠标点击代码
- IDEA 修改全文搜索快捷键
- 胡适致迷茫大学生:成不在一时,功必不唐捐
- 中央电教馆虚拟实验服务器,中央电化教育馆中小学虚拟实验试点工作启动暨培训会侧记...
- 计算机网络基础(理论知识全)
- ERP规范正式实施 信息化可以对症下药?(转)
- 读取经纬度坐标并存储为字典格式,即key为ID,value为轨迹点
- [html] 写一个鼠标跟随的特效
- Leetcode41.First Missing Positive
- 【笔记本】解决键盘粘键 -/- 按键自动输入
- 谷歌的招聘 (20分)
- 【资料整理】BGL中的BFS算法使用
热门文章
- 1040. Airline Company
- layui fixbar 返回顶部_卖在顶部(四)
- android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...
- php5 mysql 源_thinkphp6:访问多个mysql数据源(thinkphp6.0.5 / php 7.4.9)
- 运行php web文件路径,php的web路径获取
- wordpress直接处理$_post_实战:Drupal迁移到WordPress
- 条形图设置颜色Java_java – 如何在条形图中显示每个条形的条形值?
- mac系统升级 brew 是用不了_MAC平台10款效率工具推荐
- 面试 restful_RESTful Web服务面试问题
- lighttpd安装_如何在Ubuntu服务器上安装Lighttpd