Swinject - 对成员的模糊引用

Jas*_*bas 4 dependency-injection swift swinject

我在我的应用程序中使用SwinjectSwift 3.当我尝试

let container = Container()
container.register(NetworkModeling.self) { _ in Network() }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说

Ambiguous reference to member 'register(_:name:factory:)'
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

Pet*_*nev 8

我遇到了同样的问题,我认为在这种情况下编译器可能会更冗长.

无论如何,我的问题在我身边,而不是在Swinject

检查以下内容:

  1. NetworkModeling并且Network在注册范围内可见(它们是publicinternal在同一模块中.请记住,swift3引入了fileprivate许多其他说明符,因此请确保您的标识符对于注册代码是可见的

  2. 确保Network符合NetworkModeling.由于无法看到继承,swift编译器会引发有关Swinject工厂的ambigous类型的错误

希望这可以帮助

  • 上面的#2非常有帮助 (2认同)