Hey all, Is there an easy way of declaring a "lis...
# koin
k
Hey all, Is there an easy way of declaring a "list" of `single`s for a module? I wish to create a list of dependencies to be injected with
getAll
, and care not for the qualifier. Was hoping there was an easier way rather than defining a different qualifier each time as I have over 10 different classes in the list
c
I’ve just been playing around with this, and you should be able to make an extension function which generates a random qualifier for each binding. I’m not fully sure of the overall implications of it (in terms of scope pollution, etc.), but it does seem to work
Copy code
inline fun <reified T> Module.addSingleToSet(
    createdAtStart: Boolean = false,
    override: Boolean = false,
    noinline definition: Definition<T>
): BeanDefinition<T> {
    val beanDefinition = DefinitionFactory.createSingle(
        named("${T::class.qualifiedName}_${randomAlphaNumericString()}"),
        definition = definition
    )
    declareDefinition(beanDefinition, Options(createdAtStart, override))
    return beanDefinition
}


inline fun <reified T> Module.addFactoryToSet(
    createdAtStart: Boolean = false,
    override: Boolean = false,
    noinline definition: Definition<T>
): BeanDefinition<T> {
    val beanDefinition = DefinitionFactory.createFactory(
        named("${T::class.qualifiedName}_${randomAlphaNumericString()}"),
        definition = definition
    )
    declareDefinition(beanDefinition, Options(createdAtStart, override))
    return beanDefinition
}
k
hmm, I was hoping that I didn't have to resort to something like that