mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-06-01 23:45:28 +00:00
28 lines
844 B
Kotlin
28 lines
844 B
Kotlin
package dev.inmo.micro_utils.koin
|
|
|
|
import org.koin.core.parameter.ParametersDefinition
|
|
import org.koin.core.qualifier.Qualifier
|
|
import org.koin.java.KoinJavaComponent
|
|
import kotlin.reflect.KClass
|
|
|
|
fun <T> lazyInject(
|
|
kClassFactory: () -> KClass<*>,
|
|
qualifier: Qualifier? = null,
|
|
parameters: ParametersDefinition? = null
|
|
): Lazy<T> {
|
|
return lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
|
|
KoinJavaComponent.get(kClassFactory().java, qualifier, parameters)
|
|
}
|
|
}
|
|
|
|
fun <T> lazyInject(
|
|
kClass: KClass<*>,
|
|
qualifier: Qualifier? = null,
|
|
parameters: ParametersDefinition? = null
|
|
): Lazy<T> = lazyInject({ kClass }, qualifier, parameters)
|
|
|
|
inline fun <reified T> lazyInject(
|
|
qualifier: Qualifier? = null,
|
|
noinline parameters: ParametersDefinition? = null
|
|
): Lazy<T> = lazyInject(T::class, qualifier, parameters)
|