我们都知道,.net core天生自带IOC容器,但是他的功能其实并不强大,而且有坑:在构造注入的时候,他默认找参数最少的构造函数。

这里,我讲解如何使用Autofac去接管IOC,至于为什么要选Autofac,这个其实我也是随大众,不过后面我讲到关于使用Autofac实现AOP的时候,或许你能发现他的好处

第一步,引包

第二步,修改startup.cs文件

首先,在类的内部定义一个新的方法

1 public void ConfigureContainer(ContainerBuilder builder)
2 {
3     // 在这里添加服务注册
4     //builder.RegisterType<ProductRepository>    ().As<IProductRepository>();//注册
5 }

在这个方法里,完成服务注册。对于服务注册这块,关于Autofac的API如果有需要更多的了解的话,可以查阅Autofac指南

第三步,修改Program.cs文件

.UseServiceProviderFactory(new AutofacServiceProviderFactory())//使用AutoFac做IOC和AOP

第四步,正式使用

对于使用IOC,虽然Autofac有多种骚姿势,但是我这里还是推荐使用构造注入,如果要问为什么,其实关键在于,你不用在每个类库中都去拉包,到处都拉包的话,项目就会对组件产生依赖,产生一定的耦合。

.net core3.1 下由Autofac接管IOC相关推荐

  1. autofac 作用域_.Net Core3.1下使用Autofac实现依赖注入

    前言 Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个.它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.主要优点如下(此段描述为 ...

  2. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式

    为什么80%的码农都做不了架构师?>>>    Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题 ...

  3. .net core中使用autofac进行IOC

    .net Core中自带DI是非常简单轻量化的,但是如果批量注册就得扩展,下面使用反射进行批量注册的 1 public void AddAssembly(IServiceCollection serv ...

  4. .net core3.1下路由的配置

    在.net core3.1下路由的配置方式跟2.0时代已经有了区别不再采用routes.MapRoute的方式,改用endpoints.MapControllerRoute的方式 配置普通的路由如 e ...

  5. .Net Core3.1下Autofac的使用

    安装Autofac.Extensions.DependencyInjection包 在programe.cs下 public static IHostBuilder CreateHostBuilder ...

  6. ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便

    初识ASP.NET Core的小伙伴一定会发现,其几乎所有的项目依赖都是通过依赖注入方式进行链式串通的.这是因为其使用了依赖注入 (DI) 的软件设计模式,代码的设计是遵循着"高内聚.低耦合 ...

  7. asp.net core 3.1和 .Net 5.0中使用AutoFac作为IoC容器组件

    一.为啥要使用第3方依赖注入框架 ? 1.微软官方提供的依赖注入框架已经很强大,一般情况无需第3方DI容器: 2.但是在一些特殊情况,需要第3方DI容器增强依赖注入功能,一般有如下几种情况: (1) ...

  8. asp.net core3.0 mvc 用 autofac

    好久没有写文章了,最近在用.net core3.0,一些开发中问题顺便记录: 1.首先nuget引入 Autofac Autofac.Extensions.DependencyInjection 2. ...

  9. .Net Core3.1下使用Swagger搭建web api项目

    前言:微软于前天发布.net core 3.1正式版,并将长期支持3.1.所以我听到这个消息后就急忙下载.net core 3.1的SDK和Runtime,应该是公司最先用3.1的攻城狮了????. ...

最新文章

  1. jquery-1.4.4.min.js无法解析json中result.data问题
  2. 20181029NOIP模拟赛T2
  3. java_软件发布版本_Asynch HttpClien 对比发行版本说明_Alpha、Beta、RC、GA版本的区别...
  4. Tensorflow2.x.x全卷积神经网络(CNN)
  5. 第五章 常用Lua开发库2-JSON库、编码转换、字符串处理
  6. ns-allinone错误锦囊
  7. 如何理解操作系统的不确定性_温度最低-273度,最高却能有1.4亿亿亿亿度,如何定义的?...
  8. 读取properties文件的信息
  9. 如何在Linux中使用history命令
  10. android 禁用dlsym_一个绕过移动端系统限制的dlopen库: byOpen
  11. 这算不算职场PUA?
  12. elasticsearch sql插件 2.4及以下版本配置
  13. python数字图像处理(4):图像数据类型及颜色空间转换
  14. Java 基础实验 自由落体
  15. Qt Design Studio安装教程
  16. notify() 和notifyAll()区别
  17. KH7 根据身份证号码判断性别
  18. 微信小程序苹果手机边框显示不全解决办法
  19. 从APS的角度理解什么是按库存生产(MTS)计划?解释,缺点和示例
  20. 使用Matlab+Simulink开发Cortex-M系列嵌入式处理器应用程序

热门文章

  1. ubuntu 添加 qq
  2. 【Python管理GPU】pynvml工具的安装与使用
  3. Python与机器视觉(三)图像保存
  4. SpringBoot——项目启动时读取配置及初始化资源
  5. niginx反向代理解决前后端跨域问题
  6. VC++ (VS2008)里面char和LPTSTR的转换问题
  7. super关键字 java 1614785870
  8. c#winform演练 ktv项目 实现上一曲和下一曲的播放功能
  9. 吃货联盟 项目日记 0922
  10. 字符串拼接与打印相关2