using Autofac; using Autofac.Integration.WebApi; using Central.Control.WebApi.Service.Interface; using IoC; using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Web; using System.Web.Http; using IContainer = Autofac.IContainer; namespace Central.Control.WebApi.IOC { /// /// /// public class IOCService { private static IContainer _container; /// /// /// public static void InitAutofac() { #region AutoFac IOC容器 var builder = new ContainerBuilder(); try { //builder.RegisterControllers(Assembly.GetCallingAssembly()); //注册mvc控制器 需要引用package Autofac.Mvc //builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); //支持Api控制器属性注入 builder.RegisterApiControllers(Assembly.GetCallingAssembly()); //注册所有api控制器 构造函数注入 需要引用package Autofac.WebApi //注册程序集 #region Service var assemblysServices = Assembly.Load("Central.Control.WebApi"); builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency(); #endregion #region Repository //var assemblysRepository = Assembly.Load("WebApi.Repository"); //builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency(); #endregion //For().Use(x => new Context()); //builder.RegisterType() // .AsImplementedInterfaces() // .InstancePerLifetimeScope(); _container = builder.Build(); //创建依赖注入 //设置MVC依赖注入 //DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); //设置WebApi依赖注入 GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(_container); } catch (Exception ex) { throw new Exception(ex.Message + "\n" + ex.InnerException); } #endregion } /// /// 从Autofac容器获取对象 /// /// /// public static T GetFromFac() { return _container.Resolve(); } } }