首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在存储库类中使用dagger-hilt

在存储库类中使用dagger-hilt
EN

Stack Overflow用户
提问于 2020-11-13 19:51:05
回答 1查看 1.5K关注 0票数 1

请考虑以下类:

代码语言:javascript
复制
class MainRepository constructor(
    private val blogDao: BlogDao,
    private val blogRetrofit: BlogRetrofit,
    private val cacheMapper: CacheMapper,
    private val networkMapper: NetworkMapper
){
    .....
}

如果我想将MainRepository类转换为使用dagger-hilt传递参数,那么在构造器之前添加@Inject就足够了吗?

代码语言:javascript
复制
class MainRepository @Inject constructor(
    private val blogDao: BlogDao,
    private val blogRetrofit: BlogRetrofit,
    private val cacheMapper: CacheMapper,
    private val networkMapper: NetworkMapper
){

或者需要更多??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 20:04:13

是的,这就足够了。但是如果你想让你的测试变得更容易,可以考虑像这样给MainRepository添加一个Interface

代码语言:javascript
复制
interface MainRepository {
   // your functions
}

然后是实现

代码语言:javascript
复制
@Singleton
class MainRepositoryImpl @Inject constructor(
     // your dependencies
) : MainRepository

最后,在你的Di.Modules中

代码语言:javascript
复制
@Module
@InstallIn(ApplicationComponent::class) // or whatever graph fits your need the best
interface RepositoryModules {
    @Binds
    fun provideMainRepositoryImpl(repository: MainRepositoryImpl): MainRepository
}

然后,您可以使用存储库,如下所示

代码语言:javascript
复制
class ExampleRepositoryUsageClass @Inject constructor(
     private val mainrepository: MainRepository // MainRepositoryImpl is injected here
)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64820394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档