using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; using System.Configuration; namespace Learun.Ioc { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创建人:陈彬彬 /// 日 期:2017.03.03 /// 描 述:UnityIoc /// public class UnityIocHelper { #region 构造方法 /// /// 构造方法 /// /// 容器名称 private UnityIocHelper(string containerName) { UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); if (containerName == "IOCcontainer") { _container = new UnityContainer(); section.Configure(_container, containerName); } else if (section.Containers.Count > 1) { _container = new UnityContainer(); section.Configure(_container, containerName); } } #endregion #region 属性 /// /// 容器 /// private readonly IUnityContainer _container; /// /// 容器实例 /// private static readonly UnityIocHelper instance = new UnityIocHelper("IOCcontainer"); /// /// 容器实例 /// private static readonly UnityIocHelper wfInstance = new UnityIocHelper("WfIOCcontainer"); /// /// 容器实例 /// private static readonly UnityIocHelper tsInstance = new UnityIocHelper("TsIOCcontainer"); /// /// UnityIoc容器实例 /// public static UnityIocHelper Instance { get { return instance; } } public static UnityIocHelper WfInstance { get { return wfInstance; } } /// /// 定时任务 /// public static UnityIocHelper TsInstance { get { return tsInstance; } } #endregion #region 获取对应接口的具体实现类 /// /// 获取实现类(默认映射) /// /// 接口类型 /// 接口 public T GetService() { return _container.Resolve(); } /// /// 获取实现类(默认映射)带参数的 /// /// 接口类型 /// 参数 /// 接口 public T GetService(params ParameterOverride[] parameter) { return _container.Resolve(parameter); } /// /// 获取实现类(指定映射)带参数的 /// /// /// /// /// 接口 public T GetService(string name, params ParameterOverride[] parameter) { return _container.Resolve(name, parameter); } #endregion #region 判断接口是否被注册了 /// /// 判断接口是否被实现了 /// /// 接口类型 /// bool public bool IsResolve() { return _container.IsRegistered(); } /// /// 判断接口是否被实现了 /// /// 接口类型 /// 映射名称 /// public bool IsResolve(string name) { return _container.IsRegistered(name); } #endregion } }