微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个 C# 通道,相同类型,不同名称

如何解决多个 C# 通道,相同类型,不同名称

在 C# 中使用 Channels 时,我想运行具有相同基类型的多个通道,但这会导致 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 框架并没有简单的方法可以做到这一点,尽管它易于使用,但功能并不像现有的某些 3rd 方 DI 框架那样丰富。

为此,我决定改用 Autofac,它为我提供了通过命名服务调用正确服务所需的灵活性。

https://autofac.readthedocs.io/en/latest/advanced/keyed-services.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。