我在模块中提供了一个依赖项 FirebaseFirestore ,现在我试图编写一个通用类,我需要在此处注入 FirebaseFirestore 依赖项,但不确定如何做它。这就是我现在正在做的事情:
class PersistenceStore<T> : IPersistenceStore<T> {
@Inject
lateinit var db: FirebaseFirestore
override fun addRow(item: T): T {
}
}
请指导我正确的路线。
答案 0 :(得分:1)
我认为您知道如何正常注射。
第一个解决方案。并非如此。违反了通用的目的。
@Singleton
@Component(modules = [FireBaseFirestoneModule::class])
interface FireBaseComponent {
fun inject(PersistenceStore<ActualItemClass> obj) // just put the actual item type in here.
}
第二个解决方案。包装器。而是注入包装器。
class PersistenceStore<T> : IPersistenceStore<T> {
private val injectWrapper = InjectWrapper()
constructor() {
DaggerFireBaseComponent().builder().build()
.inject(injectWrapper) // inject the wrapper
}
override fun addRow(item: T): T {
}
}
class InjectWrapper { // put all injectable variables here
@Inject
lateinit var db: FirebaseFirestore
}