DIAttribute

[WIP] DIAttribute 引入了依赖注入属性。

安装

你可以使用 Xcode 11 中的 Swift Package Manager 安装这个框架。

特性

注入协议值

final class ViewController: UIViewController {
    @Inject(Self.self) var apiClient: APIClientProtocol
    
    ...
}

// Production
DIResolver.register(ViewController.self, keyPath: \.apiClient, value: ProductionAPIClient())

// Test
DIResolver.register(ViewController.self, keyPath: \.apiClient, value: MockAPIClient())

注入多个值

struct Environment {
    @Inject(Self.self) var endpoint: URL
    @Inject(Self.self) var timeZone: TimeZone
}

DIResolver.register(Environment.self) {
    Register(URL.self, URL(string: "https://example.com")!)
    Register(TimeZone.self, TimeZone(identifier: "Asia/Tokyo")!)
}

许可

DIAttribute 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。