MicroInjection

一个微型的(40行代码,或者包含注释和空格大约100行)依赖注入框架,灵感来源于 SwiftUI 的 environment。

阅读这篇相关博文

Swift

目前尚未在任何真实项目中使用该框架进行测试,并且它使用了一个 Swift 编译器特性,该特性尚未获得官方支持(详情请参阅博文)。 如果需要,可以省略属性包装器,只是使用起来可能没有那么方便。

请注意,该属性包装器使用了一个编译器特性,该特性尚未获得官方支持(它被包含在作为 Property Wrappers Swift Evolution 提案的可能未来扩展中)。 然而,即使在最坏的情况下,如果该特性被移除,也可以通过计算属性替换所有 @Injection 属性包装器的用法。 这主要可以通过搜索和替换来完成,但可能需要在每个位置添加类型信息。

目前,有一个小型测试套件覆盖了所有正常情况。 还有一个测试文件用于测试不应编译的情况,以确保情况确实如此。 这些测试被注释掉了,以避免构建失败,但可以定期检查,以防任何测试被成功构建(并导致不良行为)。

很可能,与其将其作为外部依赖项,不如直接将该文件作为一个单文件库拖放到您的项目中(这样构建速度可能比从 git 中拉取包更快)。

有关许可的信息,请参阅 LICENSE.md 文件。

寻求帮助

如果您能找到一种允许在结构体和枚举上使用属性包装器的方法,那就是我正在寻找的附加功能。