.net core 实现注册同一服务类型的多个服务实例

news/2024/9/26 3:32:03

1. 注册服务。给 IMyDependency 注册两个不同的实现。

builder.Services.AddSingleton<IMyDependency, MyDependency>();
builder.Services.AddSingleton<IMyDependency, DifferentDependency>();

2. 依赖注入。通过 IEnumerable<IMyDependency> 获取两个不同的实现,这里会按注册的顺序获取对应的实现;

[ApiController]
[Route("[controller]/[action]")]
public class TestController : ControllerBase
{private readonly IMyDependency _myDependency;private readonly IMyDependency _differentDependency;public TestController(IEnumerable<IMyDependency> dependencys){var dependencyArray = dependencys.ToArray();_myDependency = dependencyArray[0];_differentDependency = dependencyArray[1];}[HttpGet]public string Name(){return _myDependency.GetName();}[HttpGet]public string OtherName(){return _differentDependency.GetName();}
}

3. 检验效果。可以看到,第一个方法返回了 Name01,第二方法返回了 Name02。实现了一个接口多个实现的效果。

 

4. 另外

这里使用的是 .net 6, 若是 .net 8 则可以使用 AddKeyedSingleton 来实现注册同一服务类型的多个服务实例。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PWN的一些前置知识

PWN的一些前置知识点 虽然我超想打web方向,但是其实感觉每个方向都一窍不通555,算了先学学pwn和misc再说吧 大致流程 查看文件 使用checksec命令,查看是否开启PIE,ASLR等,查看是否有canary(栈保护的机制) 静态分析 使用IDA pro或者其他静态分析软件,获取软件逆向代码 动…

多版本同时维护的 Bug 修复源代码保存方案

问题描述 在日常维护系统的过程中,我们经常需要修复他人提交的 Bug(因为自己写的都是 feature 嘛)。对于单个线上版本的项目,我们可以轻松地创建一个 bug 修复分支,修复完成后再将其合并到主分支即可。 然而,当系统同时存在多个线上版本时,比如 V1.0.1、V1.0.2、V1.0.3、…

汇编(机器码)

2440常用汇编指令https://blog.csdn.net/weixin_58016534/article/details/131180529

HTTP 连接详解

概述 世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的,客户端可以打开一条TCP/IP连接,连接到任何地方的服务器。一旦连接建立,客户端和服务器之间交换的报文就永远不会丢失、受损或失序 TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的、可靠的、基于…

redis之主从复制

1.基本环境(1) Lunix centos7(2) redis版本:redis7.0.0(3) gcc已经配置成功,并且默认redis7.0.0环境已经在linux中做好了 2.架构说明(1) 一个master两salve (方便期间配置好一个后,其他两个配置文件修改即可)① Master : 10.0.0.18 6379② Slave1: 10.0.0.19 6380③ Slave…

LM Studio 本地离线部署大模型

安装 LM Studio官网: https://lmstudio.ai/下载模型:Meta-Llaa-3-8B-Instruet.Q4_KM.gguf下载地址: https://cdn-lfs-us-1.huggingface.co/repos/79/f2/79f21025e377180e4ec0e3968bca4612bb9c99fa84e70cb7815186c42a858124/647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1…

Presto学习笔记——Go客户端连接Presto

1.查询PrestoDB(facebook版本) 1.创建PrestoDB环境 使用docker创建presto测试环境https://hub.docker.com/r/prestodb/presto/tags拉取镜像docker pull prestodb/presto:0.284启动docker run -p 8080:8080 -ti -v /Users/lintong/Downloads/config.properties:/opt/presto-se…

Flink Batch Hash Aggregate

数据类型要求 BatchPhysicalHashAggRule match 条件会判断 isAggBufferFixedLength(agg) 为什么要求 aggCall 的类型是 Fixed Length 的才可以使用 HashAggregate ? 因为在 HashAggregate 中, 依赖于 BytesHashMap 数据结构来存储 keyValue 数据. 而 ByteHashMap 不支持变长的…