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;
        }
    }

 

posted @ 2020-03-26 15:00  吴政恒  阅读(1730)  评论(0编辑  收藏  举报