首页 > 其他分享 >.net core 实现注册同一服务类型的多个服务实例

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

时间:2024-05-12 16:30:02浏览次数:15  
标签:core 实现 服务类型 注册 net differentDependency public

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 来实现注册同一服务类型的多个服务实例。

 

标签:core,实现,服务类型,注册,net,differentDependency,public
From: https://www.cnblogs.com/stgp/p/18187828

相关文章

  • KAN: Kolmogorov–Arnold Networks 学术论文全译
    KAN:Kolmogorov–ArnoldNetworks学术论文全译来源 https://zhuanlan.zhihu.com/p/696001648 KAN:Kolmogorov–ArnoldNetworks https://arxiv.org/pdf/2404.19756讨论Applicationaspects:WehavepresentedsomepreliminaryevidencesthatKANsaremoreeffective......
  • dotnet 使用自定义特性
    namespaceTETTD.Common{///<summary>///导入excel特性标记字段映射的列///</summary>[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field,AllowMultiple=false)]publicclassReadAttribute:Attribute{p......
  • 在 Kubernetes 上运行 Apache Spark 进行大规模数据处理的实践
    在刚刚结束的KubernetesCommunityDay上海站,亚马逊云科技在云原生分论坛分享的“在Kunernets上运行ApacheSpark进行大规模数据处理实践”引起了现场参与者的关注。开发者告诉我们,为了充分利用Kubernetes的高可用设计、弹性,在越来越多的应用场景中,他们选择从Yarn迁移到......
  • 推荐一个好用的.net开发框架
    企业应用开发平台(EnterpriseDevelopPlatform),以下简称EDP。EDP是一套集完整组织架构,全面权限体系,以及各类基础功能于一体的基于.net的企业应用开发平台。其最大的特点是将复杂的数据行列权限的实现通过简单且友好的编码方式面向开发人员,同时EDP还提供了全面的系统基础管理功能,以......
  • Bionet_WIFI使用指南
    Bionet_WIFI使用指南适用对象:文宣楼A406课题组成员A406房间包含两个独立的路由器,分别有1000Mb的带宽。其SSID(名字)如下:使用的时候,应选择排名比较靠前的WIFI使用,越靠前来说信号越好,速度越快。获取本机的真实MAC地址路由器开启了连接管控,可以找谭然、或者我来执行绑定和连接。......
  • Kubernetes Dashboard部署安装recommended.yaml
    ```yml#Copyright2017TheKubernetesAuthors.##LicensedundertheApacheLicense,Version2.0(the"License");#youmaynotusethisfileexceptincompliancewiththeLicense.#YoumayobtainacopyoftheLicenseat##http://www.apache.......
  • 在 WPF 中集成 ASP.NET Core 和 WebView2 用于集成 SPA 应用
    背景我们有些工具在Web版中已经有了很好的实践,而在WPF中重新开发也是一种费时费力的操作,那么直接集成则是最省事省力的方法了。修改项目文件我们首先修改项目文件,让WPF项目可以包含ASP.NETCore的库,以及引用WebView2控件。<ProjectSdk="Microsoft.NET.Sdk"><Pr......
  • 【坑】严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1141 无法解析位于 E:
    错误严重性代码说明项目文件行禁止显示状态错误NETSDK1141无法解析位于E:\firefox\WPF-Samples-main\WPF-Samples-main\global.json的global.json中指定的.NETSDK版本。DragDropObjectsC:\ProgramFiles\dotnet\sdk\8.0.202\Sdks\Microsoft.NET.Sdk\targets\M......
  • post与.net core接受请求参数
    ///ffff constres=awaitinstancs.post(  "Know/DocList_Insert",  {   Id:1,   Name:"酷酷酷酷酷",   ClientId:1,   EqId:1,  },  {headers:{"Content-Type":"application/form-data"}} ......
  • .net5 动态配置
    通过自定义ConfigurationProvider可以实现从数据库获取参数,同时读取配置仍然可以使用原本的IConfiguration添加ConfigProvider处理加载配置及定期刷新配置逻辑///<summary>///配置提供者///</summary>publicclassConfigProvider:ConfigurationProvider,IDispos......