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;
            }
        }
  • 相关阅读:
    C# WebClient 使用http免费代理
    C#中给WebClient添加代理Proxy
    浅谈C#实现Web代理服务器的几大步骤
    Visual Studio 2017各版本安装包离线下载、安装全解析
    C# HttpClient, 使用C#操作Web
    ROS学习之 tab补全错误
    ROS学习之group标签
    ROS学习之CMakeLists.txt
    ROS学习之包的概念
    ROS学习之package.xml
  • 原文地址:https://www.cnblogs.com/ZhengHengWU/p/12574525.html
Copyright © 2011-2022 走看看