Slide 10
Slide 10 text
Usage of Swinject - DI Container
protocol XType {
}
struct X: XType {
}
protocol YType {
}
class Y: YType {
let x: XType
init(x: XType) {
self.x = x
}
}
protocol ZType {
}
class Z: ZType {
let y: YType
init(y: YType) {
self.y = y
}
}
import Swinject
let container = Container()
container.register(XType.self) { _ in
X()
}
container.register(YType.self) { r in
Y(x: r.resolve(XType.self)!)
}
container.register(ZType.self) { r in
Z(y: r.resolve(YType.self)!)
}
Registration:
Resolution:
let z = container.resolve(ZType)!
Type definition:
Y→X
Z→Y
X
Automatically resolved: Z→Y→X
X
Y
Z