WebApi Autofac依賴注入配置

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

  複製進項目 根據提示添加引用即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章