zoukankan      html  css  js  c++  java
  • WebAPI2使用AutoFac依赖注入完整解决方案。

    WebApi2上进行依赖注入,在百度里能搜到的的完整解决方案的文章少之又少,缺胳膊断腿。

    和MVC5依赖注入的不同之处,并且需要注意的地方,标记在注释当中。上Global代码:

    namespace S2S.WebApi
    {
        public class WebApiApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
    
                //----AutoFac  DI------
                var builder = new ContainerBuilder();
                SetupResolveRules(builder);
                builder.RegisterApiControllers(Assembly.GetExecutingAssembly());               //RegisterApiControllers方法
                var container = builder.Build();
                HttpConfiguration config = GlobalConfiguration.Configuration;//注意此处HttpConfiguration类的 config对象,一定不要new,要从GlobalConfiguration获取
                config.DependencyResolver = (new AutofacWebApiDependencyResolver(container));      //注意此处与MVC依赖注入不同
                //---------------------------------------------------------
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                
    
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
            }
    
              /// <summary>
           ///  AutoFac
            /// </summary>
            /// <param name="builder"></param>
            private static void SetupResolveRules(ContainerBuilder builder)
            {
    
                var assembly = Assembly.Load("s2s.BLL");   //根据程序集名称加载程序集
                builder.RegisterAssemblyTypes(assembly).SingleInstance();//每次都返回同一个实例
                builder.RegisterAssemblyTypes(assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces();
    
            }
        }
    }
    

     也没有太多需要解释的地方,Controller中还是构造器注入。开发中已经亲测有效。 

       可以收藏,以后查看。

  • 相关阅读:
    HDU 3874 Necklace 区间查询的离线操作
    POJ 1651 Multiplication Puzzle (区间dp)
    POJ 2528 Mayor's posters(离散+线段树)
    POJ 2886 Who Gets the Most Candies?
    webgl教程
    GL_ARRAY_BUFFER 和 GL_ELEMENT_ARRAY_BUFFER
    几个不错的webgl教程网
    svg图标库
    sublime text nodejs set
    图形学着色器学习
  • 原文地址:https://www.cnblogs.com/tdws/p/5271040.html
Copyright © 2011-2022 走看看