Dagger 2 Внедрение параметров в общий класс - PullRequest
0 голосов
/ 05 июля 2019

Я предоставил зависимость FirebaseFirestore в модуле, и теперь я пытаюсь написать универсальный класс, и мне нужно вставить сюда зависимость FirebaseFirestore , но не знаю, как это сделать. вот что я делаю сейчас:

class PersistenceStore<T> : IPersistenceStore<T> {


@Inject
lateinit var db: FirebaseFirestore

   override fun addRow(item: T): T {

   }
}

Направь меня на правильный путь, пожалуйста.

1 Ответ

1 голос
/ 06 июля 2019

Полагаю, вы знаете, как правильно вводить.

Первое решение. Не так универсально. Поражает цель универсального.

@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
}
...