InfomaniakDI

使用纯 Swift 编写的极简依赖注入机制。

支持任何第一方 Swift 平台。[ iOS / iPadOS / watchOS / macOS / Linux ]

经过充分测试。在 Infomaniak iOS 应用程序的生产环境中使用。

基于属性包装器,使用 @LazyInjectService@InjectService

优化后可与 SwiftUI Views 良好配合使用。

特性

路线图

要求

设置

在应用程序生命周期的早期,你需要编写如下代码:

import InfomaniakDI

[]

let factory = Factory(type: SomeService.self) { _, _ in
   SomeService()
}

do {
    try SimpleResolver.sharedResolver.store(factory: factory)
}
catch {
    FatalError("unexpected DI error \(error)")
}

之后,当你想解析服务时,像这样使用属性包装器:

@InjectService var injected: SomeService

注入将在属性所有者的初始化时执行。

使用 @LazyInjectService 在首次使用包装的属性时进行解析。当用作属性时,优先选择 @LazyInjectService

文档

查看 ITSimpleReslover.swift 获取更多高级示例。

许可

此软件包根据宽松的 ApacheV2 许可证提供,供您使用。