c# - 多个 C# 通道,相同类型,不同名称
问题描述
在 C# 中使用通道时,我想运行具有相同基本类型的多个通道,但这会导致 DI 出现问题。例如
我想要一个高优先级频道和一个中等优先级频道,两者都是问题类型。所以为 DI 设置它看起来像
services.AddSingleton(channel.CreateUnbounded<Issue>()) // high priority
services.AddSingleton(channel.CreateUnbounded<Issue>()) // normal priority?
public async Task<bool> CreateHighPriorityIssues(Channel<Issue> channel) {}
public async Task<bool> CreateNormalPriorityIssues(Channel<Issue> channel) {}
这显然是行不通的,那么我该如何在不必重构所有基类的情况下进行呢?
我能想到的唯一其他选择是实现某种工厂方法。
解决方案
根据研究,使用 Microsoft 的内置 DI 框架并没有简单的方法来做到这一点,尽管它易于使用,但功能并不像某些第 3 方 DI 框架那样丰富。
为此,我决定改用 Autofac,这为我提供了通过命名服务调用正确服务所需的灵活性。
https://autofac.readthedocs.io/en/latest/advanced/keyed-services.html
推荐阅读
- php - 在手机上更改日期格式?
- javascript - 我可以将 javascript 类对象存储在索引数据库中吗?
- java - CPU 信息 - 速度 - 制造商
- react-native - React 原生应用结构
- excel - 在字符“-”之前显示具有相同文本的其他单元格的内容
- reactjs - 如何避免反应中变量的内存共享?
- javascript - 如何触发 window.open 到特定的动态 URL?
- php - 从多级标记的 xml 中提取数据
- c++ - Windows 10 上的 Visual Studio 2012 C++ typedef 枚举信息消失
- drupal-7 - 最近博客的编辑块,Drupal 7