Unity学习笔记(3):获取对象

在上一篇文章中(Unity映射注册)中概要介绍了Unity中的映射机制,本节主要介绍对象获取,包括默认获取,通过名称获取,获取全部对象,同时通过加载配置文件,然后再获取对象。

通过代码获取对象

方式1:默认获取

IUnityContainer container = new UnityContainer();
//默认注册(无命名)
container.RegisterType<ILogger,ServiceLog>(); 

//获取对象
ILogger serviceLog = container.Resolve<ILogger>();
//调用方法
serviceLog.Info("日志信息");

方式2:根据名称获取

IUnityContainer container = new UnityContainer(); 

//命名注册 
container.RegisterType<ILogger, ServiceLog>("servicelog"); 

//指定命名解析对象 
ILogger serviceLog = container.Resolve<ILogger>("servicelog");
//调用方法
serviceLog.Info("日志信息");

方式3:获取同一类型全部对象

IUnityContainer container = new UnityContainer();
//默认注册(无命名) container.RegisterType<ILogger,ServiceLog>();
//命名注册 
container.RegisterType<ILogger, ServiceLog>("servicelog"); 
//获取容器中所有IClass的注册的已命名对象
IEnumerable<ILogger> logList = container.ResolveAll<ILogger>();

foreach (var item in logList)
{
  item.Info("日志信息");
}

通过加载配置文件,再获取对象

配置文件信息

<configSections>
  <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/>
</configSections>

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <!--容器--> <container name="LogContainer"> <!--映射关系--> <register type="Unity.ILogger,Unity" mapTo="Unity.ServcieLogger,Unity"></register> <register type="Unity.ILogger,Unity" name="log1" mapTo="Unity.ServcieLogger,Unity"> </register> </container> </unity>

代码获取对象

var container = new UnityContainer();
UnityConfigurationSection configuration
= (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

//解析默认对象
ILogger serviceLog = container.Resolve<ILogger>();
serviceLog.Info();

//指定命名解析对象
ILogger serviceLog1 = container.Resolve<ILogger>("log1");
serviceLog.ShowInfo(); 

//获取容器中所有IClass的注册的已命名对象
IEnumerable<ILogger> logList = container.ResolveAll<ILogger>(); 

foreach (var item in logList)
{
  item.Info("日志信息");
}

本文链接: 文章作者:雨~桐 文章出处:http://www.cnblogs.com/piscesLoveCc/ 如果您觉得阅读本文对您有帮助,请点一右下角的“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/piscesLoveCc/p/5510101.html