2026-08-26 22:24:12 +01:00

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
}
}