Я предоставил зависимость FirebaseFirestore в модуле, и теперь я пытаюсь написать универсальный класс, и мне нужно внедрить здесь зависимость FirebaseFirestore, но я не знаю, как это сделать. вот чем я сейчас занимаюсь:
class PersistenceStore<T> : IPersistenceStore<T> {
@Inject
lateinit var db: FirebaseFirestore
override fun addRow(item: T): T {
}
}
Направьте меня на правильный путь, пожалуйста.
Я предполагаю, что вы знаете, как делать инъекции нормально.
Первое решение. Не такой общий. Поражает цель дженерика.
@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
}
Хорошо, спасибо, я также внедрил конструктор на корневом уровне. Теперь я застрял здесь stackoverflow.com/questions/56940711/…