kotlin - 如何在不使用匕首的情况下创建通用视图模型工厂?
问题描述
有没有办法在不使用 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)
}
}
}
这可以通过另一种方式完成,而不使用Provider
and Inject
from dagger 吗?
解决方案
推荐阅读
- avaya - 配置 Avaya 96xx 系列以使用 Elastix
- kubernetes - CRD状态有什么用?
- django - ModelViewSet 多个数据库 put get post serializer.is_valid
- terraform - 使用多个服务主体的 Terraform 身份验证多订阅
- vb.net - 将表单分配给表单变量,然后对其进行修改控制
- azure - Azure 数据工厂复制活动 - 将日期时间保存为 csv 格式错误的日期字符串
- mongodb - 如何将 MongoDB 中的字段应用函数更新为现有值?
- javascript - 单击节点列表内的元素时切换 src 属性
- wordpress - Wordpress Multisite - 使用 .htaccess 将子域重定向到根目录
- python-3.x - 如何通过使用 graphene_django_crud 实现的身份验证访问我的 graphql 端点?