1
我在Android上使用Kodein进行依赖注入(当然是在Kotlin中),但我在一方面苦苦挣扎:我似乎无法将lambda作为参数传递给工厂。它编译正确,但在运行时失败(我通过Kodein来防范)。在Kodein中传递lambda作为参数
在我的应用类中,我做了以下绑定:
class MyApplication : Application(), KodeinAware {
override val kodein by Kodein.lazy {
...
bind<SimpleButtonListener>() with factory { func:() -> Unit -> SimpleButtonListener(func) }
}
}
在我的活动,我调用它是这样的:
val onClick = { startActivity(EmailIntent()) }
val clickListener : SimpleButtonListener by with(onClick).instance()
我也试过这种失败:
val clickListener : SimpleButtonListener by with({ startActivity(EmailIntent()) }).instance()
但我总是遇到同样的问题,当我运行时:
com.github.salomonbrys.kodein.Kodein $ NotFoundException:找不到bind()和? {? }
... bind()的出厂{Function0 - > SimpleButtonListener}
我还是很新的科特林,所以我不记得我在哪里出了问题。在我错过的语言中是否有古怪或习惯用法,或者是否有围绕lambda作为参数的Kodein限制?