swift - 创建 U 类型的类,其中 U 可以是任何协议
问题描述
由于我们现有的架构和项目要求,我有一个特定的需求(我认为过多的细节与这个问题无关)。
是否有可能拥有一个泛型类型 U ,其中 U 可以是任何类型的协议?这是我想要实现的 2 次尝试。当然,也不编译。
class BaseService<T> where T.Type == Protocol.Type {
}
extension BaseService: T {}
// error: Inheritance from non-protocol type 'T'
或者
protocol BaseServiceProtocol: class {}
class BaseService<T>: T where T == BaseServiceProtocol {
// error: Same-type requirement makes generic parameter 'T' non-generic
}
Swift 抱怨 T 不是一个类也不是一个协议,因此 BaseService 不能从它继承。
这有可能吗?这样做意味着我可以要求将我的服务作为他们的协议注入,但在我的课堂上我可以访问一个具体的实例。
谢谢你的任何提示。如果这(还)不可能,那么解释也很棒。
编辑
我的目标是能够在呼叫站点进行此操作:
let myService: BaseService<AwesomeServiceProtocol>
其中 myService 是响应协议的具体类。
解决方案
推荐阅读
- udp - 对于小于默认值 1472 的有效负载大小,gnuradio UDP 源块的正确 MTU 设置是什么?
- git - 如何将作者姓名添加到自定义 git 别名?
- c# - C# 类 System.Data.SqlClient 无法加载文件或程序集
- python - 如何从同一个包中导入
- amazon-web-services - 如何使用 aws s3 和 Chocolatey 设置提要
- ansible - 使用额外变量设置主机值不适用于我的 Ansible 角色
- intellij-idea - 如何在 IntelliJ IDEA 中启用 -Dkotlinx.coroutines.debug?
- android - android 中是否有标准/推荐的方式(或库)我应该使用 Kotlin 执行 GET、PUT、POST 和 DELETE 请求?
- itext7 - 使用 iText 合并目录中的所有 Pdf 文件
- ios - Xamarin 表单检测屏幕是否处于活动状态和/或设备锁定