• .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层),比较简单,其余的就不多介绍了。 

  • 相关阅读:
    微软VS2008月底推出beta 2中文版 搭配.NET 3.5
    Asp.Net AjaxPasswordstrength控件使用
    Asp.Net AjaxHoverMenu控件使用
    Asp.Net Ajax AutoComplete控件使用
    ASP.NET中基类页的设计和使用
    Asp.Net中页面间传值方法
    基于ASP.NET AJAX技术开发在线RSS阅读器(上篇)
    Asp.Net AjaxFilteredTextBox控件使用
    基于ASP.NET AJAX技术开发在线RSS阅读器(下篇)
    Asp.Net AjaxTextBoxWateramrk控件使用
  • 原文地址:https://www.cnblogs.com/PrintY/p/14143670.html
Copyright © 2020-2023  润新知