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
}
}