Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swinject - Ambiguous reference to member

I am using Swinject in my Swift 3 app. When I tried

let container = Container()
container.register(NetworkModeling.self) { _ in Network() }

I get an error saying

Ambiguous reference to member 'register(_:name:factory:)'

What is wrong here?

like image 974
Jaseem Abbas Avatar asked Feb 07 '23 00:02

Jaseem Abbas


1 Answers

I faced the same issue and i think compiler could be a bit more verbose in this case.

Anyway, my problem was on my side, not in Swinject

Check the following:

  1. NetworkModeling and Network are visible in scope of your registration (they are public, or internal in the same module. remember, that swift3 introduced fileprivate and many other specifiers, so make sure your identifiers are visible to registeting code

  2. Make sure that Network conforms to NetworkModeling. Being unable to see inheritance, swift compiler raises error about ambigous types for Swinject factory

Hope, this helps

like image 96
Petro Korienev Avatar answered Feb 08 '23 13:02

Petro Korienev