如何在不使用匕首的情况下创建通用ViewModelFactory?

时间:2019-09-14 01:07:33

标签: kotlin viewmodel dagger-2

是否可以在不使用Dagger的情况下创建单个/通用viewmodelfactory类?

我已经研究了一下,似乎每个人都对使用匕首创建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)
        }
    }
}

是否可以不使用匕首中的ProviderInject来完成另一种方式?

0 个答案:

没有答案