2

我调用了一个 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() from factory { id: Long, entity: String -> DetailViewModelFactory(id, entity, instance()) },后者是先前报道的。

但是,当我尝试检索对象时,我无法正确拼写代码:

private var viewModelFactory: ( (Long, String) -> DetailViewModelFactory) by factory()

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

我没有在文档中找到如何做,因为信息不足。直接检索多参数关于多参数工厂的小文档如何使用 Kodein 的直接检索来获取作为工厂绑定的依赖项?

4

1 回答 1

0

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

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

于 2019-07-16T07:39:59.420 回答