1

我创建了一个超级简单的协议:

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 )

我读过这个类似的问题,但没有帮助:Swinject - Ambiguous reference to member

谢谢大家。

4

1 回答 1

4

正如 Jakub 所说,问题在于您的.Container. 将注册更新为以下内容:

defaultContainer.register(IndependentProtocol.self, factory: { _ in 
    IndependentService()
}).inObjectScope(.container)
于 2016-10-12T20:15:59.913 回答