Koin 类似于 Dagger IntoSet

Sta*_*lov 5 android kotlin koin

Koin 是否提供将多个依赖项绑定到集合中的功能,就像 Dagger 提供的多重绑定一样?

假设我有这个界面:

interface Initializer: (Application) -> Unit
Run Code Online (Sandbox Code Playgroud)

这个接口有几个实现,例如:

class LoggingInitializer: Initializer {
    override fun invoke(p1: Application) {
        Timber.plant(Timber.DebugTree())
    }
}
Run Code Online (Sandbox Code Playgroud)

使用bind修饰符在不同模块中提供实现:

val coreToolsModules = module {
    single { LoggingInitializer() } bind Initializer::class
}
Run Code Online (Sandbox Code Playgroud)

并且此类模块安装在应用程序的 Application 类中:

class TestApplication: Application() {

    override fun onCreate() {
        super.onCreate()
        val startKoin = startKoin {
            logger(PrintLogger())
            androidContext(this@TestApplication)
            modules(listOf(coreToolsModules))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将 Initializer 类的所有实现作为一个集合注入到我的 Application 类中,以便执行这样的初始化:

    val initializers: Set<Initializer> by inject()

    //in onCreate()
    initializers.forEach { it.invoke(this) }
Run Code Online (Sandbox Code Playgroud)