【发布时间】:2021-11-30 09:47:03
【问题描述】:
Room 持久性库定义数据库以提供其Daos。
@Database(...)
abstract class DbImpl : RoomDatabase() {
abstract val daoImpl: DaoImpl
}
如何在 Dagger 中提供所有 DAO,而无需手动提供 Module?
@Provides
fun provideDaoImpl(
db: DbImpl,
) = db.daoImpl
【问题讨论】:
-
如果您已经提供了数据库,为什么不在 DbImpl 中创建抽象函数并使用您的数据库对象调用它们
-
对于数据库,您必须告诉 dagger 如何提供它,因为您不拥有该类
-
我提供
DbImpl,但我不想单独提供所有DAO。另外我试图不直接依赖DbImpl。否则db.daoImpl将是一个选项。
标签: android android-room dagger-2 dagger dagger-hilt