没有参数的 Swinject 服务 class 无法在 Swift 3.0 的 .container 范围内注册:为什么?
Swinject service class without parameters failing to register in .container scope with Swift 3.0: why?
我创建了一个超级简单的协议:
protocol IndependentProtocol {}
和服务:
class IndependentService: IndependentProtocol {}
和以下 Swinject
注册有效:
defaultContainer.register( IndependentProtocol.self )
{
_ in IndependentService()
}
但下面的不是:
defaultContainer.register( IndependentProtocol.self )
{
_ in IndependentService()
}.inObjectScope( .Container )
给出的错误是:
Ambiguous reference to member 'register(_:name:factory:)'
有趣的是,以下工作(即:具有参数 的服务可以在 .container
范围内注册 ):
defaultContainer.register( AnotherProtocol.self )
{
r in AnotherService(
signals: r.resolve( AnotherService.self )!
)
}.inObjectScope( .container )
我读过这个类似的问题,但没有帮助:
提前谢谢大家。
正如 Jakub 评论的那样,问题在于您 .Container
的大写。将注册更新为以下内容:
defaultContainer.register(IndependentProtocol.self, factory: { _ in
IndependentService()
}).inObjectScope(.container)
我创建了一个超级简单的协议:
protocol IndependentProtocol {}
和服务:
class IndependentService: IndependentProtocol {}
和以下 Swinject
注册有效:
defaultContainer.register( IndependentProtocol.self )
{
_ in IndependentService()
}
但下面的不是:
defaultContainer.register( IndependentProtocol.self )
{
_ in IndependentService()
}.inObjectScope( .Container )
给出的错误是:
Ambiguous reference to member 'register(_:name:factory:)'
有趣的是,以下工作(即:具有参数 的服务可以在 .container
范围内注册 ):
defaultContainer.register( AnotherProtocol.self )
{
r in AnotherService(
signals: r.resolve( AnotherService.self )!
)
}.inObjectScope( .container )
我读过这个类似的问题,但没有帮助:
提前谢谢大家。
正如 Jakub 评论的那样,问题在于您 .Container
的大写。将注册更新为以下内容:
defaultContainer.register(IndependentProtocol.self, factory: { _ in
IndependentService()
}).inObjectScope(.container)