129 lines
3.9 KiB
C#
129 lines
3.9 KiB
C#
|
using Microsoft.Practices.Unity;
|
|||
|
using Microsoft.Practices.Unity.Configuration;
|
|||
|
using System.Configuration;
|
|||
|
|
|||
|
namespace Learun.Ioc
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 版 本 PIT-ADMS V7.0.3 敏捷开发框架
|
|||
|
/// Copyright (c) 2013-2018 Hexagon PPM
|
|||
|
/// 创建人:研发部
|
|||
|
/// 日 期:2017.03.03
|
|||
|
/// 描 述:UnityIoc
|
|||
|
/// </summary>
|
|||
|
public class UnityIocHelper
|
|||
|
{
|
|||
|
#region 构造方法
|
|||
|
/// <summary>
|
|||
|
/// 构造方法
|
|||
|
/// </summary>
|
|||
|
/// <param name="containerName">容器名称</param>
|
|||
|
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 属性
|
|||
|
/// <summary>
|
|||
|
/// 容器
|
|||
|
/// </summary>
|
|||
|
private readonly IUnityContainer _container;
|
|||
|
/// <summary>
|
|||
|
/// 容器实例
|
|||
|
/// </summary>
|
|||
|
private static readonly UnityIocHelper instance = new UnityIocHelper("IOCcontainer");
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 容器实例
|
|||
|
/// </summary>
|
|||
|
private static readonly UnityIocHelper wfInstance = new UnityIocHelper("WfIOCcontainer");
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 容器实例
|
|||
|
/// </summary>
|
|||
|
private static readonly UnityIocHelper tsInstance = new UnityIocHelper("TsIOCcontainer");
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// UnityIoc容器实例
|
|||
|
/// </summary>
|
|||
|
public static UnityIocHelper Instance
|
|||
|
{
|
|||
|
get { return instance; }
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public static UnityIocHelper WfInstance
|
|||
|
{
|
|||
|
get { return wfInstance; }
|
|||
|
}
|
|||
|
|
|||
|
public static UnityIocHelper TsInstance
|
|||
|
{
|
|||
|
get { return tsInstance; }
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 获取对应接口的具体实现类
|
|||
|
/// <summary>
|
|||
|
/// 获取实现类(默认映射)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">接口类型</typeparam>
|
|||
|
/// <returns>接口</returns>
|
|||
|
public T GetService<T>()
|
|||
|
{
|
|||
|
return _container.Resolve<T>();
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 获取实现类(默认映射)带参数的
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">接口类型</typeparam>
|
|||
|
/// <param name="parameter">参数</param>
|
|||
|
/// <returns>接口</returns>
|
|||
|
public T GetService<T>(params ParameterOverride[] parameter)
|
|||
|
{
|
|||
|
return _container.Resolve<T>(parameter);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 获取实现类(指定映射)带参数的
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="name"></param>
|
|||
|
/// <param name="parameter"></param>
|
|||
|
/// <returns>接口</returns>
|
|||
|
public T GetService<T>(string name, params ParameterOverride[] parameter)
|
|||
|
{
|
|||
|
return _container.Resolve<T>(name, parameter);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 判断接口是否被注册了
|
|||
|
/// <summary>
|
|||
|
/// 判断接口是否被实现了
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">接口类型</typeparam>
|
|||
|
/// <returns>bool</returns>
|
|||
|
public bool IsResolve<T>()
|
|||
|
{
|
|||
|
return _container.IsRegistered<T>();
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 判断接口是否被实现了
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">接口类型</typeparam>
|
|||
|
/// <param name="name">映射名称</param>
|
|||
|
/// <returns></returns>
|
|||
|
public bool IsResolve<T>(string name)
|
|||
|
{
|
|||
|
return _container.IsRegistered<T>(name);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|