首页 > 解决方案 > 如何在不使用匕首的情况下创建通用视图模型工厂?

问题描述

有没有办法在不使用 Dagger 的情况下创建单个/通用 viewmodelfactory 类?

我进行了研究,似乎每个人都对使用 dagger 创建 VMF 感到满意,但是您在使用像Koin这样的不同 DI 框架是什么?

这是标准的 Dagger 实现:

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)
        }
    }
}

这可以通过另一种方式完成,而不使用Providerand Injectfrom dagger 吗?

标签: kotlinviewmodeldagger-2

解决方案


推荐阅读