48 lines
1.1 KiB
Swift
Executable File
48 lines
1.1 KiB
Swift
Executable File
// Copyright © 2024 VOID Software SA. All rights reserved.
|
|
|
|
import Foundation
|
|
import Swinject
|
|
|
|
final class DIContainer {
|
|
static var shared = DIContainer(isMocking: false)
|
|
let container: Container = Container()
|
|
let assembler: Assembler
|
|
|
|
init(isMocking: Bool) {
|
|
|
|
if !isMocking {
|
|
|
|
assembler = Assembler(
|
|
[
|
|
ManagerAssembly(),
|
|
RepositoriesAssembly(),
|
|
ViewModelsAssembly()
|
|
|
|
],
|
|
container: container
|
|
)
|
|
} else {
|
|
assembler = Assembler(
|
|
[
|
|
|
|
],
|
|
container: container
|
|
)
|
|
}
|
|
}
|
|
|
|
func resolve<T>() -> T {
|
|
guard let resolvedType = container.resolve(T.self) else {
|
|
fatalError("Could not resolve dependency")
|
|
}
|
|
return resolvedType
|
|
}
|
|
|
|
func resolve<T, Arg>(argument: Arg) -> T {
|
|
guard let resolvedType = container.resolve(T.self, argument: argument) else {
|
|
fatalError("Could not resolve dependency (3)")
|
|
}
|
|
return resolvedType
|
|
}
|
|
}
|