using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; using System.Configuration; namespace Learun.Ioc { /// /// 版 本 PIT-ADMS V7.0.3 敏捷开发框架 /// Copyright (c) 2013-2018 Hexagon PPM /// 创建人:研发部 /// 日 期:2017.03.03 /// 描 述:UnityIoc /// public class UnityIocHelper { #region 构造方法 /// /// 构造方法 /// /// 容器名称 private UnityIocHelper(string containerName) { UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); _container = new UnityContainer(); if (containerName == "IOCcontainer" || section.Containers[containerName] != null) { 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 } }