我在我的项目中使用Koin di 库。lib 的版本是1.0.0-RC-1。
我的模块:
val appModule = module {
scope("UserScope") { UserToaster(androidContext()) as Toaster }
scope("AnonScope") { AnonToaster(androidContext()) as Toaster }
}
我在我的Application类中开始 koin 并创建了范围:
override fun onCreate() {
super.onCreate()
startKoin(this, listOf(appModule))
getKoin().getOrCreateScope("AnonScope")
}
接下来我尝试将Toaster的实现从当前范围注入 Activity 中的变量。这里的代码:
private val toaster: Toaster by inject(scope = "AnonScope")
在此之后我得到一个错误:
Caused by: org.koin.error.DependencyResolutionException: Multiple definitions found for type 'interface com.example.nkirilov.playground.Toaster (Kotlin reflection is not available)' - Koin can't choose between :
Scope [name='UserScope',class='com.example.nkirilov.playground.Toaster']
Scope [name='AnonScope',class='com.example.nkirilov.playground.Toaster']
Check your modules definition, use inner modules visibility or definition names.
我不明白为什么这不起作用(如果使用具有不同名称的单个- 它会起作用)。那是koin错误吗?如何避免这个错误?