android - 如何在kodein中使用带有两个参数的工厂绑定(bind)来恢复对象?

标签 android kotlin dependency-injection kodein

我调用了一个 ViewModel,它在其构造函数中获取三个参数:

class DetailViewModel(
    private val id: Long,
    private val tipo: String,
    private val msRepository: MSRepository) : ViewModel() {
val establishmentProfessional by lazyDeferred { 
      msRepository.getEstablishment(id, tipo)
   }
}

我创建了一个工厂来构建对象 com DI:
class DetailViewModelFactory(
    private val id: Long,
    private val tipo: String,
    private val msRepository: MSRepository
    ) : ViewModelProvider.NewInstanceFactory() {

@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
    return DetailViewModelFactory(id,  tipo, msRepository) as T
     }
}

我编写了工厂绑定(bind)如下:bind() from factory { id: Long, entity: String -> DetailViewModelFactory(id, entity, instance()) } ,后者是先前报道的。

但是,当我尝试检索对象时,我无法正确拼写代码:
private var viewModelFactory: ( (Long, String) -> DetailViewModelFactory) by factory()

如何使用一系列参数正确检索对象?

我没有在文档中找到如何做,因为信息不足。 Retrieval Direct ,
multiple argumentes ,
Little documentation on multi-argument factories ,
How can I use Kodein's direct retrieval to fetch a dependency bound as a factory?

最佳答案

如果要检索工厂而不是实例,请使用 by factory2() .

如果要检索实例,请使用 by instance(arg = M(42L, "whatever")) .

关于android - 如何在kodein中使用带有两个参数的工厂绑定(bind)来恢复对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435081/

相关文章:

java - 无状态 bean 的依赖注入(inject)(@Inject 和 @PersistenceContext)失败

C++ 依赖注入(inject) : Object lifetimes?

Android listview如何将选中的项目滚动到顶部

android - 如何使用kotlin在android应用程序中设置错误消息的时间延迟

android - 如何在 Kotlin 中打开完全展开的 BottomSheetDialogFragment?

Android EditText 协程去抖操作符,如 RxJava

spring - 相当于Spring中的@ImplementedBy

android - 如何在textview上设置下划线文本?

android - 如何将主题应用到 Android 工具栏?

java - 如何使用 Vitamio 播放加密视频文件 (.mpg)?