using Autofac;
using Autofac.Core;
using System.Web.Mvc;
namespace Infrastructure
{
///
/// 依赖注入
///
public class DIContainer
{
private static IContainer iContainer;
public static void RegisterContainer(IContainer container)
{
iContainer = container;
}
///
/// 按类型获取组件
///
///
///
public static Tservice Resolve()
{
return ResolutionExtensions.Resolve(iContainer);
}
///
/// 按参数获取组件
///
///
///
///
public static Tservice Resolve(params Parameter[] parameters)
{
return ResolutionExtensions.Resolve(iContainer, parameters);
}
///
/// 按key获取组件
///
/// 组件类型
/// 枚举类型的key
/// 返回获取的组件
public static Tservice ResolveKeyed(object serviceKey)
{
return ResolutionExtensions.ResolveKeyed(iContainer, serviceKey);
}
///
/// 按名称获取组件
///
///
///
///
public static Tservice ResolveNamed(string serviceName)
{
return ResolutionExtensions.ResolveNamed(iContainer, serviceName);
}
///
/// 获取InstancePerHttpRequest的组件 mvc
///
///
///
public static Tservice ResolvePerHttpRequest()
{
IDependencyResolver current = DependencyResolver.Current;
if (current != null)
{
Tservice service = (Tservice)current.GetService(typeof(Tservice));
if (service != null)
{
return service;
}
}
return ResolutionExtensions.Resolve(iContainer);
}
}
}