测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可 | BSD |
发布最后发行 | 2017年7月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 Benoit BRIATTE 维护。
依赖注入 Swift。兼容 swift server-side 和 Swift for iOS
首先,您必须创建一个模块并注册一些提供商
let module = Module()
module.bind(IAnimal.self).to(Dog.self)
IAnimal 是一个协议,Dog 类必须实现它
public protocol IAnimal {
var name: String { get }
func scream() -> String
}
open class Dog: IAnimal, Injectable {
public var name: String
public required convenience init(injector: Injector, arguments: [String : Any]?) throws {
self.init(name: arguments?["name"] as? String ?? "Athina")
}
init(name: String) {
self.name = name
}
public func scream() -> String {
return "Barking"
}
}
然后,您必须在注入器中注册您的模块
Injector.default.register(module: module)
最后,注入一个 IAnimal 并检索模块内注册的具体类
if let animal = try? Injector.default.inject(IAnimal.self) {
print(animal.name) // print Athina
print(animal.scream()) // print Barking
}
注册一个处理参数的提供商
let module = Module()
module.bind(IAnimal.self).with { (_, arguments) -> IAnimal? in
if let name = arguments?["name"] as? String {
return Dog(name: name)
}
return nil
}
Injector.default.register(module: module)
注入具有 arguments Dictionary<String, Any> 的 IAnimal
if let animal = Injector.default.inject(IAnimal.self, arguments: ["name": "Athina"]) {
print(animal.name) // print Athina
print(animal.scream()) // print Barking
}
if let otherAnimal = Injector.default.inject(IAnimal.self, arguments: ["name": "Yoda"]) {
print(otherAnimal.name) // print Yoda
print(otherAnimal.scream()) // print Barking
}
有关更多信息,请参阅 CONTRIBUTING.md
本项目遵循 贡献者行为准则。通过参与,您期望遵守此准则。如有不适当行为,请向 [email protected] 报告。
DGDependencyInjector 使用 BSD 3-Clause 许可证授权。