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 に答える