Полагаю, вы знаете, как правильно вводить.
Первое решение. Не так универсально. Поражает цель универсального.
@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
}