【发布时间】:2019-10-19 11:08:41
【问题描述】:
我调用了一个 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
}
}
我写的Factory绑定如下: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?
【问题讨论】:
标签: android kotlin dependency-injection kodein