没有参数的 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)