【发布时间】:2020-12-13 04:07:24
【问题描述】:
我有一个名为CrmRepository 的接口,我通过它实现了两个类SuiteCrmRepository 和OneCrmRepository,它们是我的应用程序的数据源。
每当用户使用不同的帐户登录时,我想动态交换依赖项(数据源)。
我使用 Koin 将存储库注入到构造函数中的视图模型中:
class ModuleViewModel(private var crmRepo: CrmRepository) :ViewModel() {}
并像这样在koin中声明模块:
fun provideCrmRepository(
): CrmRepository {
return if (crmType == CrmType.SUITE) {
SuiteCrmRepository()
} else if (crmType == CrmType.ONE){
OneCrmRepository()
}
}
single {
provideCrmRepository()
}
问题是一旦创建了ModuleViewModel,也创建了CrmRepository 的单个实例,当创建新的ModuleViewModel 但在我更改crmType 之后,它无法更改或再次创建变量。
【问题讨论】:
标签: android kotlin mvvm dependency-injection koin