Kotlin 如何在不使用dagger的情况下创建通用viewmodelfactory?

Kotlin 如何在不使用dagger的情况下创建通用viewmodelfactory?,kotlin,viewmodel,dagger-2,Kotlin,Viewmodel,Dagger 2,有没有办法不使用Dagger创建单个/通用viewmodelfactory类 我已经研究过了,似乎每个人都对使用dagger创建VMF感到满意,但是您使用的是什么样的DI框架呢 这是标准的匕首实现: class ViewModelProviderFactory @Inject constructor( private val creators: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<Vie

有没有办法不使用Dagger创建单个/通用viewmodelfactory类

我已经研究过了,似乎每个人都对使用dagger创建VMF感到满意,但是您使用的是什么样的DI框架呢

这是标准的匕首实现:

class ViewModelProviderFactory @Inject constructor(
    private val creators: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {

    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        val creator = creators[modelClass] ?: creators.entries.firstOrNull {
            modelClass.isAssignableFrom(it.key)
        }?.value ?: throw IllegalArgumentException("unknown model class $modelClass")
        try {
            @Suppress("UNCHECKED_CAST")
            return creator.get() as T
        } catch (e: Exception) {
            throw RuntimeException(e)
        }
    }
}
类ViewModelProviderFactory@Inject构造函数(
私有val创建者:映射
):ViewModelProvider.Factory{
重写趣味创建(modelClass:Class):T{
val creator=creators[modelClass]?:creators.entries.firstOrNull{
modelClass.isAssignableFrom(it.key)
}?值?:抛出IllegalArgumentException(“未知模型类$modelClass”)
试一试{
@抑制(“未选中的_CAST”)
将creator.get()返回为T
}捕获(e:例外){
抛出运行时异常(e)
}
}
}

不使用dagger的
提供程序
注入
,是否可以通过另一种方式完成此操作?

您是否可以指定创建工厂的目的?你在用Koin吗?如果是的话,我相信。