c# - 将泛型类型提取到接口中
问题描述
我有两个接口
public interface IEventBusExchange<in TQueue, TMessage>
where TQueue : struct
where TMessage : DtoBase
{
Task PublishAsync(TMessage message);
Task SubscribeAsync(TQueue queue, Func<TMessage, bool> callback);
}
public interface ISubscriber<TQueue, TMessage> : ISubscriber
where TQueue : struct
where TMessage : class
{
TQueue Queue { get; }
Task<bool> CallbackAsync(TMessage message);
}
和 ISubscribe 的抽象类
public abstract class Subscriber<TExchange, TQueue, TMessage> : ISubscriber<TQueue, TMessage>
where TExchange : IEventBusExchange<TQueue, TMessage>
where TQueue : struct
where TMessage : DtoBase
{
...
}
我想做的是从 IEventbusExchange 中提取 TQueue 和 TMessage,这样我就可以使抽象类更简单并且类型安全。
是否可以在 c# 中执行此操作?
解决方案应如下所示:
public abstract class Subscriber<TExchange> : ISubscriber<TQueue, TMessage>
where TExchange : IEventBusExchange<TQueue, TMessage>
{
...
}
解决方案
推荐阅读
- .net - 在 SQL Server 2017 中使用 Cryptography.RSACryptoServiceProvider 程序集进行解密
- javascript - 在这个小代码上疯狂,chrome.runtime.onMessage 总是给出未定义的。我能做些什么?
- python - 我应该为每个单独的 Django 项目需要单独的虚拟环境吗
- java - 将 java 类转换为通用 kotlin 类会改变调用哪个函数
- html - 加入不显示所选项目 - 使用 Svelte
- python - 如何在 Google Drive API 中按路径查找文件夹 ID?
- javascript - useMutation 后 useQuery 未正确更新并设置 cookie 以进行授权
- reactjs - 找不到 Dropbox 登录窗口的图像
- reactjs - 如何使用 selenium 刮取隐藏的 React 组件键
- git - 使用 API 命令获取拉取请求的工作项的权限错误