五:.net core(.NET 6)使用Autofac实现依赖注入
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实现依赖注入相关推荐
- 使用 Autofac 进行依赖注入
先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就 ...
- Autofac实现依赖注入
目录 依赖注入概念 依赖注入的三种方式 Autofac还支持通过配置文件来进行服务注册 依赖注入概念 说autofac之前我们要知道什么是依赖注入和切面编程 DI---Dependency Injec ...
- 如何为 .NET Core 3.0 中 WPF 配置依赖注入 ?
咨询区 user842818: 我非常熟悉 ASP.NET Core 和它开箱即用的依赖注入支持,当 Controller 需要依赖注入时,可以在 构造函数 中以参数的形式来实现,这个IOC的理念相当 ...
- .NET Core ASP.NET Core Basic 1-2 控制反转与依赖注入
本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...
- ASP.NET Core如何在ActionFilterAttribute里做依赖注入
点击蓝字 关注我 在ASP.NET Core里,我们可以使用构造函数注入很方便地对Controller,ViewComponent等部件做依赖注入.但是如何给过滤器ActionFilterAttrib ...
- 把旧系统迁移到.Net Core 2.0 日记(2) - 依赖注入/日志NLog
Net Core 大量使用依赖注入(Dependency Inject), 打个比方,我们常用的日志组件有Log4Net,NLog等等. 如果我们要随时替换日志组件,那么代码中就不能直接引用某个组件的 ...
- mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...
概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...
- 控制反转_.NET Core ASP.NET Core Basic 12 控制反转与依赖注入
本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...
- autofac 作用域_.Net Core3.1下使用Autofac实现依赖注入
前言 Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个.它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.主要优点如下(此段描述为 ...
最新文章
- bzoj 1787 紧急集合
- 学界 | DeepMind论文解读:通过删除神经元来了解深度学习
- [导入]C#实现Des加密和解密
- EasyPR车牌识别学习总结
- 细胞自动机 c语言程序,Processing精彩例程之细胞自动机
- [架构之路-42]:目标系统 - 系统软件 - Linux下的网络通信-2-无线局域网WIFI原理、WIFI与3G/4G/以太网/蓝牙的协议转换
- 万特电能表接线仿真系统 软件_电工技能——分享一款超实用的电工仿真教学接线Flash动画软件...
- 《2013小企业会计准则》的适用范围
- 轻松绕过PayPal双重认证
- ios 常用的第三方库
- 倾斜摄影相机焦距与实景三维模型效果的关系
- 客户管理系统CRM推荐
- 音视频之模拟今日头条列表视频
- 几款我比较满意的在线脑图工具
- Linux -- Ubuntu下载deepin wine依赖问题笔记
- okhttputils使用(zhuan)
- Linux基础-线程
- 微信小程序手机号输入3和7位空格,删除时删除空格
- c语言实现猜单词小游戏
- jQuery判断复选框是否被选中的3种方式
热门文章
- 激活函数以0为中心的好处
- 绝对定位和相对定位的研究
- 我们的新书--《我是一只IT小小鸟》
- 无法建立与远程计算机连接,解决“不能建立到远程计算机的连接,因此用于此...”的方法_常见问题解析...
- 第十四章第四节:Java集合框架之二叉树
- 传统企业转战电商必看(独家视角)
- 怎么渗透验证 mysql_mysql-渗透测试
- Contour Features 边界特征
- vue可视化拖拽组件模板,vue组件拖拽自定义界面
- jieba.cut 和jieba.posseg