public class AutofacConfig { /// <summary> /// IOC註冊 /// </summary> public static void Register() { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); //批量註冊程序集 var serviceDll = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(ab => ab.GetName().Name.EndsWith("Service")).ToArray(); builder.RegisterAssemblyTypes(serviceDll).AsImplementedInterfaces().SingleInstance(); IContainer container = builder.Build(); GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container); //幫助類注入 AutofacHelper.RegisterContainer(container); } }
/// <summary> /// 依賴注入幫助類 /// </summary> public class AutofacHelper { private static IContainer _container; ///<summary> ///註冊DIContainer ///</summary> ///<param name="container">Autofac.IContainer</param> /// public static void RegisterContainer(IContainer container) { _container = container; } ///<summary> ///獲取服務(Single) ///</summary> ///<typeparam name="TService">組件類型</typeparam> ///<returns>返回獲取的組件</returns> /// public static TService Resolve<TService>() { using (ILifetimeScope scope = _container.BeginLifetimeScope()) { return ResolutionExtensions.Resolve<TService>(scope); } } }
複製進項目 根據提示添加引用即可