首页 > 其他分享 >解决内置DI不能使用名字注入不同实例问题

解决内置DI不能使用名字注入不同实例问题

时间:2022-10-09 09:46:07浏览次数:52  
标签:内置 DI TestType TypeA TypeB ITest 实例 Type public

 

public Enum TestType
{
    TypeA,TypeB
}

 

1 public Interface ITest
2 {
    TestType Type { get; } 3 void SayHi(); 4 }


 1 public Class TestA:ITest
 2  {
 3    Public TestType Type => TypeA;
 4      public void SayHi()
 5      {
 6           Console.WriteLine("TestA");
 7       }
 8   }
 9 
10   
11  public Class TestB:ITest
12 {
13   Public TestType Type => TypeB;
14       public void SayHi() 
15      { 
16            Console.WriteLine("TestB");
17      } 
18 }       

1、program.cs中注册服务

builder.Services.AddScoped<ITest,TestA>();
builder.Services.AddScoped<ITest,TestB>();

2、新建类TestDomainService.cs,注入服务

public class TestDomainService
{
  private readonly ITest testA;
  private readonly ITest testB;    
  public TestDomainService(IEnumerable<ITest> tests)
    {
       this.testA = tests.First(t=>t.Type == TestType.TypeA);
       this.testB = tests.First(t=>t.Type == TestType.TypeB);
    } 
}

 

标签:内置,DI,TestType,TypeA,TypeB,ITest,实例,Type,public
From: https://www.cnblogs.com/lixiang1998/p/16771055.html

相关文章

  • spring boot项目使用mybatis-plus代码生成实例
    前言mybatis-plus官方地址https://baomidou.commybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实现CRUD,自动分页,逻辑删除等功......
  • 转载:关于vscode(Visual Studio Code)编写c语言 中文乱码问题
    关于vscode(VisualStudioCode)编写c语言中文乱码问题。处理方法:选择菜单File > Preferences >Settings,找到TextEditor>Files中的Encoding,更改为Simplified......
  • Codeforces Round #822 (Div. 2)
    A题意给一个长为n的数组,每次可以对其中某个数做+1或-1的操作。求最小的操作次数,使得可以从数组中选出三个相同的数。思路很容易可以想到选三个最接近的数然后操作。也......
  • 源码角度了解Skywalking之服务端OAP对服务注册与服务实例注册的处理
    源码角度了解Skywalking之服务端OAP对服务注册与服务实例注册的处理我们了解到Skywalking的agent在进行启动初始化的时候会对服务进行注册,对应的逻辑是ServiceAndEndpointR......
  • redis的hash数据类型的基本操作
    1、首先连上你的redis以下一些命令很简单,或者执行命令后效果也无法体现的就没有进行截图展示2、hash相关操作说明:redis的hash键值对集合,特别适合存储对象,类似于java中......
  • shell脚本实例分析1
    1、#!/bin/ksh#name:testdirecho$0program=`basename$0`program_dir=`dirname$0`echo"program=$program"echo"program_dir=$program_dir"if[`echo"$0"|grep......
  • Redis客户端汇总
    编程客户端已经支持了许多编程语言,详见:https://redis.io/docs/clients/图形客户端1.AnotherRedisDesktopManager支持哨兵,集群,ssh通道,ssl认证,stream,subscr......
  • DICOM:DICOM标准学习路线图(初稿)
    https://zssure.blog.csdn.net/article/details/49231303题记:DICOM医学图像处理专栏撰写已有两个年头,积累了近百篇文章。起初只是用于记录自己科研、工作中遇到的疑难问......
  • Docker方式快速启动一个Redis实例
    安装Redis有多种方式,除了可以通过各个平台的软件包工具安装外,还可以直接从源码安装。但是,安装Redis可能会遇到一些这样的问题,比如:1.网络环境比较差,下载耗时比较长2.从源......
  • redis的set数据类型的基本操作
    1、首先连上你的redis以下一些命令很简单,或者执行命令后效果也无法体现的就没有进行截图展示2、set相关操作说明:redis的set是String类型的无序集合,它底层其实是一个val......