Injeção de Dependência do Resolvedor – Swift

Mar 07 2023
.

import Resolver

extension Resolver: ResolverRegistering {
    public static func registerAllServices() {
        // Register dependencies here
        register { MyServiceImplementation() as MyServiceProtocol }
    }
}

{
    "services": [
        {
            "type": "MyServiceProtocol",
            "implementation": "MyServiceImplementation"
        }
    ]
}

let myService = Resolver.resolve(MyServiceProtocol.self)

register { MyServiceImplementation() as MyServiceProtocol }.scope(.application)

class MyViewController: UIViewController {
    @Injected var myService: MyServiceProtocol

    override func viewDidLoad() {
        super.viewDidLoad()

        myService.doSomething()
    }
}

class MyViewController: UIViewController {
    @OptionalInjected var myOptionalService: MyOptionalServiceProtocol?

    override func viewDidLoad() {
        super.viewDidLoad()

        myOptionalService?.doSomething()
    }
}

register { MyServiceImplementation() as MyServiceProtocol }

class MyViewController: UIViewController {
    let myService: MyServiceProtocol

    init(myService: MyServiceProtocol) {
        self.myService = myService
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}