【发布时间】:2018-10-03 11:58:46
【问题描述】:
我正在尝试使用 Swift 和泛型创建一个基本的服务定位器/DI 实现。我想要完成的是注册 type 和 implementation-type 并将这两个限制在签名中,以便派生 implementation-type来自类型。
但是我似乎无法提出正确的语法(如果可能的话)。我天真的尝试:
func register<T, U>(type: T.Type, implementationType: U.Type) where U: T {
// ...
}
然而,这不会编译,并带有以下消息:
Type 'U' constrained to non-protocol, non-class type 'T'
添加约束where T: AnyObject,没有帮助。
是否可以在签名中限制继承?
【问题讨论】: