在Dagger 2中提供方法

我有问题,我不知道为什么,但我的变量不注入和等于null。 我提供这样的方法:

@Provides @Singleton fun provideSource(context: Context): DatabaseSource = DatabaseSource(context, Models.DEFAULT, DB_NAME, DB_VERSION) @Provides @Singleton fun provideStoreDB(databaseSource: DatabaseSource): KotlinReactiveEntityStore<Store> = KotlinReactiveEntityStore(KotlinEntityDataStore(databaseSource.configuration)) @Provides @Singleton @NotNull fun provideStores() : Database<Store> = PersistentDatabase(Store::class) 

和模特商店的类:

它是“持久”阶级的继承人。

 @Entity data class Store(val id: Long = 0, val name: String = "", val description: String = "", val date: String = "") : DisplayableItem, Persistable 

与DB一起工作的类

 @Singleton class PersistentDatabase <T: Any> (val type: KClass<T>) : Database <T> { @Inject internal lateinit var store: KotlinReactiveEntityStore<T> override fun addResult(item: T): Completable = store.insert(item).toCompletable() override fun addListResult(item: List<T>): Completable = store.insert(item).toCompletable() override fun deleteResult(item: T): Completable = store.delete(item) override fun getAllResults(): Single<List<T>> = (store select type).get().observable().toList() override fun removeAllResults(): Completable = store.delete(type).get().single().toCompletable() } 

在我的存储库层,我使用它是这样的:

 @Inject lateinit var database: Database<DetectedLanguageText> fun getHistory(): Single<List<DetectedLanguageText>> { return database.getAllResults() .map { it.sortedByDescending { it.date } } .transitSuccessToEmitter(historyEmitter) } 

但是当我在函数getAllResults变量

  @Inject internal lateinit var store: KotlinReactiveEntityStore<T> 

不注入并等于null 。 为什么它不适合我?

我看不到在PersistentDatabase中注入KotlinReactiveEntityStore的位置。 你只需在提供的方法中创建一个实例,但是没有注入完成。