129 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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