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