mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-05-16 13:09:35 +08:00
76 lines
2.5 KiB
C#
76 lines
2.5 KiB
C#
![]() |
using Autofac;
|
|||
|
using Autofac.Core;
|
|||
|
using System.Web.Mvc;
|
|||
|
|
|||
|
namespace Infrastructure
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 依赖注入
|
|||
|
/// </summary>
|
|||
|
public class DIContainer
|
|||
|
{
|
|||
|
private static IContainer iContainer;
|
|||
|
public static void RegisterContainer(IContainer container)
|
|||
|
{
|
|||
|
iContainer = container;
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 按类型获取组件
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="Tservice"></typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
public static Tservice Resolve<Tservice>()
|
|||
|
{
|
|||
|
return ResolutionExtensions.Resolve<Tservice>(iContainer);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 按参数获取组件
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="Tservice"></typeparam>
|
|||
|
/// <param name="paramters"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public static Tservice Resolve<Tservice>(params Parameter[] parameters)
|
|||
|
{
|
|||
|
return ResolutionExtensions.Resolve<Tservice>(iContainer, parameters);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 按key获取组件
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="Tservice">组件类型</typeparam>
|
|||
|
/// <param name="serviceKey">枚举类型的key</param>
|
|||
|
/// <returns>返回获取的组件</returns>
|
|||
|
public static Tservice ResolveKeyed<Tservice>(object serviceKey)
|
|||
|
{
|
|||
|
return ResolutionExtensions.ResolveKeyed<Tservice>(iContainer, serviceKey);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 按名称获取组件
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="Tservice"></typeparam>
|
|||
|
/// <param name="serviceName"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public static Tservice ResolveNamed<Tservice>(string serviceName)
|
|||
|
{
|
|||
|
return ResolutionExtensions.ResolveNamed<Tservice>(iContainer, serviceName);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 获取InstancePerHttpRequest的组件 mvc
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="Tservice"></typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
public static Tservice ResolvePerHttpRequest<Tservice>()
|
|||
|
{
|
|||
|
IDependencyResolver current = DependencyResolver.Current;
|
|||
|
if (current != null)
|
|||
|
{
|
|||
|
Tservice service = (Tservice)current.GetService(typeof(Tservice));
|
|||
|
if (service != null)
|
|||
|
{
|
|||
|
return service;
|
|||
|
}
|
|||
|
}
|
|||
|
return ResolutionExtensions.Resolve<Tservice>(iContainer);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|