129 lines
3.9 KiB
C#
Raw Normal View History

2025-08-13 11:14:39 +08:00
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
}
}