首页 > 其他分享 >NetCore 依赖注入

NetCore 依赖注入

时间:2024-03-10 16:44:07浏览次数:26  
标签:容器 依赖 委托 NetCore 创建 创建对象 注册 new 注入

.AddTransient<IFoo, Foo>() // //ImplementationType 根据类型
.AddScoped<IBar>(_ => new Bar())//ImplementationFactory 通过工厂创建
.AddSingleton<IBaz>(new Baz());//ImplementationInstance 实现实例

添加对象注册并注册不同作用域,并遍历注册到容器内。

1 ImplementationFactory 通过工厂创建, 创建 一个基于容器的委托 service.ImplementationFactory(provider),,最后根据这个委托实现IServiceProvider 接口来执行 new Bar() 来创建对象

2 ImplementationType 根据类型 创建基于容器的委托, Func<Cat, Type[], object?> factory = (c, arguments) => Create(c, to, arguments);最后传入参数调用这个委托来创建对象

3 ImplementationInstance 实现实例 这里创建一个委托 Func<Cat, Type[], object?> factory = (_, arguments) => instance; 直接调用对象来创建


4 创建好委托后会会将委托,生命周期等信息写入 ServiceRegistry 服务注册类,并添加到容器的字典集合里
type为键,最后创建返回容器。
(这里注册一个委托,写入 ServiceRegistry 服务注册类,用来创建范围工厂和生成子容器
_cat.Register<IServiceScopeFactory>(c => new ServiceScopeFactory(c.CreateChild()), Lifetime.Transient);//创建子容器,创建范围工厂,就是生命周期)


5 创建范围。通过容器来执行刚刚的 生成容器是注册的委托,创建子容器,就是在容器里有创建了一个容器

6 获取服务创建对象,通过执行前面容器里的注册的委托。根据不同注册方式来进行不同的对象创建

 

 

 

 

 

 

标签:容器,依赖,委托,NetCore,创建,创建对象,注册,new,注入
From: https://www.cnblogs.com/liujian1368928/p/18064354

相关文章

  • 安装前端依赖和运行项目时的问题
    前端1.安装依赖使用WebStorm或VSCode工具打开项目前端源码,在项目根目录运行命令:npminstall--force使用npminstall会报错(这是一个与依赖项冲突相关的问题)。报错:npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://registry.np......
  • 植物大战僵尸,用QT注入代码,AT&T汇编语法
    遇到了硬茬子,找了半天资料才找到,因为这个QT是mingw编译的,好像编译器是gcc吧,我也不太懂,但是查了半天知道他的语法是AT&T,而我在学汇编的时候学的是8086,好像叫intel语法。所以开头就碰壁到崩溃。。但是又不想放弃换MFC框架。。也不想用QT5.0+的版本。因为毕竟以后还是高版本好用吗。......
  • 最新堆叠查询注入攻击和注入代码分析技术
    堆叠查询注入攻击堆叠查询注入攻击的测试地址在本书第2章。堆叠查询可以执行多条语句,多语句之间以分号隔开。堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己要执行的语句。首先访问id=1',页面返回MySQL错误,再访问id=1'%23,页面返回正常结果。这里可以使用Boolean注入、时......
  • WPF(.netCore) 嵌入WebApi服务
    1从NUGET添加组件“Swashbuckle.AspNetCore”相关使用代码varbuilder=WebApplication.CreateBuilder();builder.Services.AddControllers();varapp=builder.Build();app.UseHttpsRedirection();a......
  • Autofac的Swashbuckle生成报错 Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetada
    错误内容:AnexceptionwasthrownwhileactivatingSwashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator->Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescriptionGroupCollectionProvider->λ:Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider[]->......
  • NetCore Rtsp视频流转Websocket实现Web实时查看摄像头
    .NetCoreRtsp视频流转Websocket实现Web实时查看摄像头最近工作中遇到需求需要实现这个功能,网上找了很多方案,大都是转为视频文件保存,实时查看的方案倒比较少,最终自己慢慢琢磨了很久在windows系统下实现了,里面的核心思路是:由FFmpeg.AutoGen捕捉Rtsp流视频帧,转为Bitmap,借由Websocke......
  • netcore AES同等效转java语言 加密方法
    privatestaticbyte[]Keys={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};///<summary>///DES加密字符串///</summary>///<paramname="encryptString&qu......
  • 利用SpringAMQP依赖使用RabbitMQ
    消息消费端和提供端需要引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>都需要在application.yml进行如下配置spring:rabbitmq:host:192.168.230.100#r......
  • R语言有状态依赖强度的非线性、多变量跳跃扩散过程模型似然推断分析股票价格波动
    原文链接:http://tecdat.cn/?p=23010 原文出处:拓端数据部落公众号跳跃扩散过程为连续演化过程中的偏差提供了一种建模手段。但是,跳跃扩散过程的微积分使其难以分析非线性模型。本文开发了一种方法,用于逼近具有依赖性或随机强度的多变量跳跃扩散的转移密度。通过推导支配过程时变......
  • .NETCore文件上传将文件保存到docker容器以外的文件夹
    最近在开发一个文件服务,用于公司内容各应用的文件保存和查询获取。开发环境:windows10+.NETCore7.0+Mysql  发布环境:Liunx+Docker实现功能:文件服务提供接口上传文件和下载文件,服务用于内网访问。实现中遇到的问题:由于文件保存是用的系统自带文件服务。而部署环境是Liunx+Doc......