Skip to content

Instantly share code, notes, and snippets.

@egabor
Created February 14, 2022 20:37
Show Gist options
  • Save egabor/707df1e25919db25072709d8c0efb375 to your computer and use it in GitHub Desktop.
Save egabor/707df1e25919db25072709d8c0efb375 to your computer and use it in GitHub Desktop.
Dependency Injection snippets. [Swinject]
import Foundation
import Swinject
class DependencyProvider {
static let shared = DependencyProvider()
private let container = Container()
let assembler: Assembler
private init() {
assembler = Assembler(
[
// XyAssembly1(),
// XyAssembly2()
],
container: container
)
}
}
import Foundation
import Swinject
class RepositoryAssembly: Assembly {
func assemble(container: Container) {
container.register(<#Type#>.self) { _ in
<#Object()#>
}
.inObjectScope(<#ObjectScope#>)
}
}
.package(url: "https://github.com/Swinject/Swinject", .exact("2.8.1"))
import Foundation
import Swinject
@propertyWrapper
struct Injected<T> {
private let resolver = (DependencyProvider.shared.assembler.resolver as! Container).synchronize() // swiftlint:disable:this force_cast
init() {}
lazy var wrappedValue: T = {
return resolver.resolve(T.self)!
}()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment