zoukankan      html  css  js  c++  java
  • .net webapi 中使用autofac

    简单记录下,是因为前几天有人问起来,我又温习了下,所以在这mark下。

    环境是 .net4.5 webapi 很简单的一个接口项目,额外就一个service层

    1、NuGet安装

    安装好以后,写一个注册类

    2、注册类

     1     /// <summary>
     2     /// Autoface
     3     /// PrintY    
     4     /// 2020-12-16
     5     /// </summary>
     6     public class AutofacConfig
     7     {
     8         /// <summary>
     9         /// IOC注册
    10         /// </summary>
    11         public static void Register()
    12         { 
    13             // 实例化一个autofac的创建容器
    14             var builder = new ContainerBuilder();
    15 
    16             // 注册api容器需要使用HTTPConfiguration对象
    17             HttpConfiguration config = GlobalConfiguration.Configuration;
    18 
    19             SetupResolveRules(builder);
    20 
    21             //注册所有的ApiControllers
    22             builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
    23 
    24             // 创建一个autofac的容器
    25             var container = builder.Build();
    26 
    27             // api的控制器对象由autofac来创建
    28             config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    29         }
    30 
    31 
    32         /// <summary>
    33         /// 设置配置规则
    34         /// </summary>
    35         /// <param name="builder"></param>
    36         public static void SetupResolveRules(ContainerBuilder builder)
    37         {
    38             // 告诉autofac框架,将来要创建的控制器类存放在哪个程序集,(本实例[CommonManagement.Web])
    39             Assembly controllerAssmbly = Assembly.Load("LTT.API");
    40 
    41             builder.RegisterApiControllers(controllerAssmbly);
    42 
    43             //如果需要直接调用仓储层
    44             //告诉autofac框架注册数据仓储层所在程序集中的所有类的对象实例
    45             //Assembly RepositoryAssembly = Assembly.Load("LTT.Service");
    46 
    47             //创建仓储层中的所有类的instance以此类的实现接口存储
    48             //builder.RegisterTypes(RepositoryAssembly.GetTypes()).Where(a => a.Name != null).AsImplementedInterfaces();
    49 
    50             builder.RegisterAssemblyTypes(Assembly.Load("LTT.Service")).PropertiesAutowired();
    51         }
    52     }
    View Code

    说下哈,这个注册类也不是我写的,我只是改了点东西,忘记从哪摘抄的了,和原作者说下sorry

    3、使用

    1  public FastEnquiryService fastEnquiryService { set; get;}

     就很简单了,直接用就行,我这个项目没有写接口,也没有仓储,然后是属性注入(只注入的service层),比较简单,其余的就不多介绍了。 

  • 相关阅读:
    ReenTrantLock可重入锁(和synchronized的区别)总结
    什么是死锁?如何解决死锁?【转载】
    android studio 完整安装教程,已完全实践过
    foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on
    Android 开发 res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)
    android studio 突然出现Gradle project sync failed 错误
    android 开发edittext获取焦点时hint消失
    Z480联想笔记本突然没有了声音
    android聊天,存储聊天记录sqlite
    adb shell出现error错误
  • 原文地址:https://www.cnblogs.com/PrintY/p/14143670.html
Copyright © 2011-2022 走看看