Autofac的简单使用:

由于将来可能引用很多包,为了保持统一队形,我们再新建一个类库项目Wsk.Core.Package,当做包的引用集合:

删掉Class1,把Wsk.Core、Wsk.Core.Filter里面到包删掉,引用到Package里面,然后需要用到包的项目,都引用package这个类库项目。这样可以防止将来项目多了,版本环境如果不一致导致的版本冲突。更改以后的目录架构:

添加依赖注入的两个关键包:Autofac.Extensions.DependencyInjection 和 Autofac.Extras.DynamicProxy

然后在Program添加Autofac的支持:

接着,新建一个类库项目,例如叫做 Wsk.Core.Service,然后新建一个类,叫做TestAutofac,以及对应的接口 ITestAutofac,以及一个方法叫做Test,用于做依赖注入实现的测试使用:

接下来,在启动项目里面添加该依赖项目,然后在Startup里面的ConfigureServices方法里面,添加对ITestAutofac的单例注册实现:

改写先前的WSK控制器,添加构造函数的依赖注入,以及修改或新增一个用于测试的方法,此处改写了HelloWorld方法,为了看出效果,只打印以上方法的输出内容:

 

测试一下效果:执行程序,并在swagger上面手动调用:

显示预期内容,代表依赖注入成功。

接下来,使用注入整个类库来实现依赖注入,用于接口和类很多的情况下,为了方便,就可以把类库下面的所有接口全部暴露出来进行依赖注入。

在启动项目里面,新建一个文件夹,叫Common,在里面新建类AutofacRegister,并继承Autofac.Module ,在类下面重写 Load 方法:

在startup里面,注释掉上面的实现方法,新建ConfigureContainer容器:

最后进行启动测试

测试成功,完结撒花~~

最后总结一点东西:

AddSingleton(),只在首次请求会创建服务,后续所有请求都会使用该实例。

AddScoped(),不同的请求,实例不同。

AddTransient(),临时服务,每次请求都会创建一个新的服务实例

本篇章有关源码如下:

AutofacRegister

public class AutofacRegister: Autofac.Module{protected override void Load(ContainerBuilder container){var assemblysServices = Assembly.Load("Wsk.Core.Service"); // 需要暴露接口所在的程序集container.RegisterAssemblyTypes(assemblysServices).SingleInstance()  // 设置单例注入.AsImplementedInterfaces() // 把所有接口全暴露出来.EnableInterfaceInterceptors(); }}

View Code

ConfigureContainer

public void ConfigureContainer(ContainerBuilder container){container.RegisterModule(new AutofacRegister());}

View Code

TestAutofac 、ITestAutofac

 public class TestAutofac:ITestAutofac{public void Test(){Console.WriteLine("This is Autofac Test ……");}}

View Code

public interface ITestAutofac{void Test();}

View Code

最后,如果觉得有帮助,还请各位大大们打赏、点赞或留言

五:.net core(.NET 6)使用Autofac实现依赖注入相关推荐

  1. 使用 Autofac 进行依赖注入

    先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就 ...

  2. Autofac实现依赖注入

    目录 依赖注入概念 依赖注入的三种方式 Autofac还支持通过配置文件来进行服务注册 依赖注入概念 说autofac之前我们要知道什么是依赖注入和切面编程 DI---Dependency Injec ...

  3. 如何为 .NET Core 3.0 中 WPF 配置依赖注入 ?

    咨询区 user842818: 我非常熟悉 ASP.NET Core 和它开箱即用的依赖注入支持,当 Controller 需要依赖注入时,可以在 构造函数 中以参数的形式来实现,这个IOC的理念相当 ...

  4. .NET Core ASP.NET Core Basic 1-2 控制反转与依赖注入

    本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...

  5. ASP.NET Core如何在ActionFilterAttribute里做依赖注入

    点击蓝字 关注我 在ASP.NET Core里,我们可以使用构造函数注入很方便地对Controller,ViewComponent等部件做依赖注入.但是如何给过滤器ActionFilterAttrib ...

  6. 把旧系统迁移到.Net Core 2.0 日记(2) - 依赖注入/日志NLog

    Net Core 大量使用依赖注入(Dependency Inject), 打个比方,我们常用的日志组件有Log4Net,NLog等等. 如果我们要随时替换日志组件,那么代码中就不能直接引用某个组件的 ...

  7. mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...

    概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...

  8. 控制反转_.NET Core ASP.NET Core Basic 12 控制反转与依赖注入

    本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...

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

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

最新文章

  1. bzoj 1787 紧急集合
  2. 学界 | DeepMind论文解读:通过删除神经元来了解深度学习
  3. [导入]C#实现Des加密和解密
  4. EasyPR车牌识别学习总结
  5. 细胞自动机 c语言程序,Processing精彩例程之细胞自动机
  6. [架构之路-42]:目标系统 - 系统软件 - Linux下的网络通信-2-无线局域网WIFI原理、WIFI与3G/4G/以太网/蓝牙的协议转换
  7. 万特电能表接线仿真系统 软件_电工技能——分享一款超实用的电工仿真教学接线Flash动画软件...
  8. 《2013小企业会计准则》的适用范围
  9. 轻松绕过PayPal双重认证
  10. ios 常用的第三方库
  11. 倾斜摄影相机焦距与实景三维模型效果的关系
  12. 客户管理系统CRM推荐
  13. 音视频之模拟今日头条列表视频
  14. 几款我比较满意的在线脑图工具
  15. Linux -- Ubuntu下载deepin wine依赖问题笔记
  16. okhttputils使用(zhuan)
  17. Linux基础-线程
  18. 微信小程序手机号输入3和7位空格,删除时删除空格
  19. c语言实现猜单词小游戏
  20. jQuery判断复选框是否被选中的3种方式

热门文章

  1. 激活函数以0为中心的好处
  2. 绝对定位和相对定位的研究
  3. 我们的新书--《我是一只IT小小鸟》
  4. 无法建立与远程计算机连接,解决“不能建立到远程计算机的连接,因此用于此...”的方法_常见问题解析...
  5. 第十四章第四节:Java集合框架之二叉树
  6. 传统企业转战电商必看(独家视角)
  7. 怎么渗透验证 mysql_mysql-渗透测试
  8. Contour Features 边界特征
  9. vue可视化拖拽组件模板,vue组件拖拽自定义界面
  10. jieba.cut 和jieba.posseg