zoukankan      html  css  js  c++  java
  • Asp.Net Core中使用Autofac 实现自动依赖注入

    一、为什么使用AutoFac?

    Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高,Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个。

         官方网站http://autofac.org/

              源码下载地址https://github.com/autofac/Autofac

    • 控制反转(IoC/Inverse Of Control):   调用者不再创建被调用者的实例,由autofac框架实现(容器创建)所以称为控制反转。
    • 依赖注入(DI/Dependence injection) :   容器创建好实例后再注入调用者称为依赖注入

    二、AutoFac的使用

    NuGet安装程序包

    封装ConfigureAutofac方法通过ConfigureServices进行调用实现自动注入

            /// <summary>
            /// autofac 自动注入
            /// </summary>
            /// <param name="services"></param>
            /// <returns></returns>
            public IServiceProvider ConfigureAutofac(IServiceCollection services)
            {
                //初始化容器
                var builder = new ContainerBuilder();
                //管道寄居
                builder.Populate(services);
                //业务逻辑层所在程序集命名空间
                Assembly service = Assembly.Load("Api.Service");
                //业务逻辑层接口所在程序集命名空间
                Assembly iService = Assembly.Load("Api.IService");
                //数据访问层所在程序集命名空间
                Assembly data = Assembly.Load("Api.Data");
                //数据访问层接口所在程序集命名空间
                Assembly iData = Assembly.Load("Api.IData");
                //自动注入
                builder.RegisterAssemblyTypes(service, iService, data, iData)
                    .AsImplementedInterfaces();
                //构造
                var ApplicationContainer = builder.Build();
                //将AutoFac反馈到管道中
                return new AutofacServiceProvider(ApplicationContainer);
            }
          //autofac 自动注入
          return ConfigureAutofac(services);

    Controller中使用

        [Route("api/[controller]/[action]")]
        public class AuthController : ApiController
        {
            private readonly ITokenService _tokenService;
            /// <summary>
            /// 
            /// </summary>
            public AuthController(ITokenService tokenService)
            {
                _tokenService = tokenService;
            }
        }
  • 相关阅读:
    JVM(随手笔记)
    linux常用操作(个人笔记)
    MySQL学习笔记(个人随手笔记)
    jquery对象和Dom对象的转化([0])
    函数防抖和函数节流
    数据持久化分析
    day.js处理相对时间
    外链资源403的处理
    前端实现图片预览的两种方式及使用
    监听器标准写法
  • 原文地址:https://www.cnblogs.com/ZhengHengWU/p/12574525.html
Copyright © 2011-2022 走看看