03_02_服务注册与消费

news/2026/1/26 17:39:24/文章来源:https://www.cnblogs.com/blogzys/p/19534652

03_02_服务注册与消费

一、ServiceCollection

所有服务都是注册在ServiceCollection集合上的

根容器是通过BuildServiceProvider()创建出来的

ServiceCollection是存放服务注册信息的集合

不是容器,是信息,类型信息,登录了类型的名称,对应的接口,注册信息

根据注册信息进行实例化

服务描述类List<ServiceDescriptor>,服务类型,实现类型

如果构造函数参数需要其它实例,参数实例也必须在容器里已经存在

多个重载的构造函数 

依赖注入系统是根据构造函数来构造实例

有多个,会用哪个来构造呢?

new的时候也只能构造其中一个

如果一个类里面有3个构造函数,会选择哪一个呢?

 public static class Sample01{private interface ITest{ }public class Account: IAccount{}public class Message: IMessage{}public class Tool: ITool{}public class Test: ITest{public Test(IAccount account){Console.WriteLine($"Ctor:Test(IAccount)");}public Test(IAccount account, IMessage message){Console.WriteLine($"Ctor:Test(IAccount,IMessage)");}public Test(IAccount account, IMessage message, ITool tool){Console.WriteLine($"Ctor:Test(IAccount,IMessage,ITool)");}}public static void Run(){var test = new ServiceCollection().AddTransient<IAccount, Account>().AddTransient<IMessage, Message>().AddTransient<ITest, Test>().BuildServiceProvider().GetService<ITest>();}}

在所有符合条件,选择参数最多的那一个,超集

第三个ITool tool没有注册,所以会选择第二个

 

2、如果参数相同,会选择哪一个呢?

如果某个构造函数的参数类型集合,能够成为所有合法构造函数参数类型集合的超集

public static class Sample02
{private interface ITest{ }public class Account: IAccount{}public class Message: IMessage{}public class Tool: ITool{}public class Test: ITest{public Test(IAccount account, IMessage message){Console.WriteLine($"Ctor:Test(IAccount)");}public Test(IMessage message, ITool tool){Console.WriteLine($"Ctor:Test(IAccount,IMessage)");}}public static void Run(){var test = new ServiceCollection().AddTransient<IAccount, Account>().AddTransient<IMessage, Message>().AddTransient<ITool, Tool>().AddTransient<ITest, Test>().BuildServiceProvider().GetService<ITest>();}
}

都不会,不满足某一个构造函数里面的参数集合能够成为超集。

两个条件:

1、都存在在容器

2、参数集合存在超集

抛异常:

Reference knowledge, personality instructions, deep thinking, 100/5000 AI translation, translation, AI big model translation, unable to activate type "ConsoleApp1. Sample02+Test". The following constructors are ambiguous

无法激活类型“ConsoleApp1.Sample02+Test”。以下构造函数存在歧义

Void .ctor(ConsoleApp1.IAccount, Zhaoxi.ConsoleApp1.IMessage)
Void .ctor(ConsoleApp1.IMessage, Zhaoxi.ConsoleApp1.ITool)”

两个构造函数,没有一个是超集的

选择无能

一个常见的坑

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1220089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年不锈钢管公司权威推荐:304/304l不锈钢管、316l不锈钢管、三通管件、不锈钢管厚壁管、不锈钢管圆管选择指南

2026西南不锈钢管优质厂家推荐指南行业背景与采购痛点据《2026-2030中国不锈钢管材行业发展白皮书》数据显示,国内不锈钢管材年需求量持续以8.2%的增速增长,西南地区(四川、重庆、云南、贵州)因路桥、市政、建筑装…

Redis深度解析

Redis数据结构之Zset 目录一、zset数据结构二、跳表skipList 什么是跳表? 1.跳表的查找2.跳表的插入3.跳表的删除4.跳表的更新一、zset数据结构相比于set,sorted set 增加了一个权重参数 score,…

2026年京东年货节1月25日开启!淘宝年货节1月19日开启!年货节开启时间红包口令满减优惠力度与整体节奏

京东年货节红包口令是京东搜【红包2000】【福利333】【福利800】随着春节(2026年农历新年为2月17日)临近,电商两大巨头纷纷启动年货采购大战。淘宝/天猫与京东分别在1月中旬至月底掀起一波优惠高潮:淘宝/天猫年货节…

富文本编辑器CKEDITOR图文混排的WORD图片示例?

企业后台文档管理功能集成方案&#xff08;CKEditor插件化实现&#xff09; 作为西安高新技术企业项目负责人&#xff0c;针对企业网站后台管理系统Word粘贴、文档导入、微信公众号内容粘贴需求&#xff0c;结合客户&#xff08;党政/军工/金融/高校等&#xff09;对安全性、兼…

9.网络工具nmap和traceroute、tracert

1、nmap2、traceroute、tracert 以上仅供参考,如有疑问,留言联系

RK3568平台YOLOv11模型部署教程:环境配置与端侧推理优化全流程解析

文章目录 【深度实战】RK3568平台YOLO11模型从零到部署完整指南 前言 技术架构概览 一、开发环境搭建 1.1 Anaconda环境配置 1.2 RKNN工具链安装 下载核心组件 安装依赖和工具包 1.3 PyTorch环境配置 二、数据集准备与标注 2.1 数据集结构设计 2.2 图像标注工具配置 标注操作流…

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

文章目录 【深度实战】RK3568平台YOLO11模型从零到部署完整指南 前言 技术架构概览 一、开发环境搭建 1.1 Anaconda环境配置 1.2 RKNN工具链安装 下载核心组件 安装依赖和工具包 1.3 PyTorch环境配置 二、数据集准备与标注 2.1 数据集结构设计 2.2 图像标注工具配置 标注操作流…

国防项目CKEDITOR粘贴地图截图的示例代码?

企业网站后台管理系统功能扩展项目记录 作为北京某国企的项目负责人&#xff0c;近期我负责的企业网站后台管理系统文章发布模块迎来了新的需求挑战。客户要求增加 Word 粘贴功能、Word 文档导入功能以及微信公众号内容粘贴功能&#xff08;自动下载公众号文章图片并上传至服务…

动图制作超简单?在线图片合成GIF高效方法

做自媒体配图、电商主图、课件动图&#xff0c;或是职场做汇报素材时&#xff0c;常会需要把多张图片合成GIF动图&#xff0c;却总被在线图片合成的问题难住&#xff1a;要么工具操作繁琐&#xff0c;新手半天拼不好图;要么合成后GIF画质模糊、画面卡顿&#xff0c;还有的合成后…

GIF编辑零门槛,图片合成GIF工具5分钟上手方案

做自媒体配图、电商主图、课件动图&#xff0c;或是职场做汇报素材时&#xff0c;常会用到图片合成GIF的需求&#xff0c;却总因选不对图片合成GIF工具踩坑&#xff1a;要么工具操作繁琐&#xff0c;新手不会调整图片顺序和播放速度;要么合成后GIF画质模糊、画面卡顿断层&#…

社保卡照片怎么压缩?社保卡制卡证件照要求全解

社保卡申领、制卡上传照片时&#xff0c;很多人都卡在了照片环节&#xff1a;要么照片体积过大提交失败&#xff0c;要么手动改尺寸后比例失调&#xff0c;找工具压缩又怕画质变差&#xff0c;反复调整还是通不过社保系统的审核。社保卡制卡照片有明确的官方规格&#xff1a;背…

汽车制造CKEDITOR如何通过示例实现设计图粘贴?

企业级Word内容集成解决方案&#xff1a;信创环境全兼容方案 作为山东某集团企业的项目负责人&#xff0c;面对日益增长的政府项目需求&#xff0c;我针对Word内容集成这一关键需求进行了全面技术评估和方案设计。以下是符合信创要求的完整解决方案。 一、需求分析与技术挑战…

公务员报名图片大小压缩,照片怎么改才合规

公务员国考、省考报名上传照片时&#xff0c;很多考生都遇见过难题&#xff1a;照片体积过大提交失败&#xff0c;手动改尺寸后比例失调&#xff0c;找工具压缩又怕画质变差&#xff0c;反复调整还是通不过报名系统审核。公务员报名照片有统一官方规格&#xff1a;背景为纯白色…

Product Hunt 每日热榜 | 2026-01-26

1. Thumbfa.st 标语&#xff1a;在YouTube缩略图中使用Midjourney——每次都能看到你的脸 介绍&#xff1a;只需上传一张你的脸&#xff0c;获取灵感于任何YouTube缩略图&#xff0c;描述你的创意——AI会立刻为你生成出来。反复调整直到满意。费用仅为传统缩略图设计师的十分…

地下管网流量水质监测设备技术应用分析

一&#xff0e;引文 地下管网是城市水系统的核心组成部分&#xff0c;其流量与水质的稳定直接关系到城市供水排水安全、生态环境保护及民生保障。流量水质监测设备作为地下管网运行状态的感知载体&#xff0c;通过精准采集管网内水流数据与水质指标&#xff0c;为管网运维、故障…

【牛客网-小红的k次方】:避免大数问题

题目描述 小红拿到了一个长为 n 的数组 a&#xff0c;定义数组中所有元素的乘积为 x。小红想知道&#xff0c;最大的满足 x 是 30 的 k 次方的倍数&#xff08;形式化的&#xff0c;x \mod 30^k 0&#xff09;的 k 是多少&#xff1f; 题目链接&#xff1a;小红的k次方_牛客…

udev 规则

4. 选择特定设备(vid=10c4, pid=ea60)的完整规则文件bash# /etc/udev/rules.d/99-silabs-usb.rules # Silicon Labs CP2102 USB-UART桥接器# 规则1:设置设备文件权限(/dev/ttyUSB*) SUBSYSTEM=="tty",…

【开源推荐】AgentForce:当 GraphRAG 遇上 Agentic Workflow,打造下一代 AI 智能体平台 - TW

摘要:传统的 RAG 系统只能“检索”片段,往往缺乏全局观。今天推荐一个基于 Python 3.12+ 和 FastAPI 构建的开源项目 AgentForce。它融合了 GraphRAG(知识图谱增强)的认知能力与 Agentic Workflow(代理工作流)的…

2026年钉钉服务商推荐:基于多行业应用评价,针对数据孤岛与效率痛点精准指南

摘要 在数字化转型浪潮中,企业选择与自身业务深度契合的钉钉生态服务商,已成为提升组织协同效率、驱动业务创新的关键决策。面对市场上数量众多、能力各异的服务伙伴,决策者常陷入信息过载与评估标准缺失的困境,难…

2026年钉钉服务商推荐:基于多行业应用评价,针对定制开发与数据安全痛点精准指南

摘要 在数字化转型浪潮中,企业选择与自身需求高度匹配的钉钉生态服务商,已成为提升组织协同效率、实现业务在线化的关键决策。面对市场上数量众多、能力各异的服务伙伴,决策者常陷入信息过载与选择困难的境地,担忧…