请考虑以下类:
class MainRepository constructor(
private val blogDao: BlogDao,
private val blogRetrofit: BlogRetrofit,
private val cacheMapper: CacheMapper,
private val networkMapper: NetworkMapper
){
.....
}如果我想将MainRepository类转换为使用dagger-hilt传递参数,那么在构造器之前添加@Inject就足够了吗?
class MainRepository @Inject constructor(
private val blogDao: BlogDao,
private val blogRetrofit: BlogRetrofit,
private val cacheMapper: CacheMapper,
private val networkMapper: NetworkMapper
){或者需要更多??
发布于 2020-11-13 20:04:13
是的,这就足够了。但是如果你想让你的测试变得更容易,可以考虑像这样给MainRepository添加一个Interface:
interface MainRepository {
// your functions
}然后是实现
@Singleton
class MainRepositoryImpl @Inject constructor(
// your dependencies
) : MainRepository最后,在你的Di.Modules中
@Module
@InstallIn(ApplicationComponent::class) // or whatever graph fits your need the best
interface RepositoryModules {
@Binds
fun provideMainRepositoryImpl(repository: MainRepositoryImpl): MainRepository
}然后,您可以使用存储库,如下所示
class ExampleRepositoryUsageClass @Inject constructor(
private val mainrepository: MainRepository // MainRepositoryImpl is injected here
)https://stackoverflow.com/questions/64820394
复制相似问题