android - Dagger2 错误:[Dagger/MissingBinding] com.testtask.hotels.data.IRepository 不能在没有@Provides-annotated 方法的情况下提供
问题描述
我正在研究 Dagger2,但出现错误:error: [Dagger/MissingBinding] com.testtask.hotels.data.IRepository cannot be provided without an @Provides-annotated method.
存储库模块
@Module(includes = [NetworkModule::class])
@DisableInstallInCheck
abstract class RepositoryModule {
@Singleton
@Binds
abstract fun provideRepository(repository: RepositoryImpl): IRepository
}
RepositoryImpl
class RepositoryImpl @Inject constructor(
private val api: ApiService,
) : IRepository {
override suspend fun getHotels(): List<BaseHotelInfo> {
return api.getHotels()
}
override suspend fun getConcreteHotelInfo(hotelId: Int): FullHotelInfo {
return api.getConcreteHotel(hotelId)
}
}
应用组件
@Component(modules = [RepositoryModule::class])
@Singleton
interface AppComponent {
fun inject(app: App)
fun inject(hotelsFragment: AllHotelsFragment)
fun inject(rootActivity: RootActivity)
}
根活动
@AndroidEntryPoint
class RootActivity : BaseActivity<RootViewModel>() {
companion object {
private const val TAG = "M_RootActivity"
}
override val layout: Int = R.layout.activity_root
override val viewModel: RootViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
根视图模型
@HiltViewModel
class RootViewModel @Inject constructor(
val repository: IRepository
): BaseViewModel() {
}
我检查了@Binds 的指南,但我没有看到与我的任何差异可能是什么原因?
解决方案
推荐阅读
- javascript - Auto shrink text - React Native
- c++ - Why not using move semantics in the following snippet?
- rabbitmq - Spring boot RabbitMQ Listener Creating Duplicate Queue
- javascript - Issue trying to convert Python with Selenium module to JavaScript using Brython
- .net - System.IO.IOException:目录名称无效。: '\\?\C:\\XXX\\XXX, 尝试删除文件时,文件类型为“DirectoryInfo”
- python - 使用 Tkinter 将 SQLite 的数据导入内存数据库
- python - Python Hangman 游戏问题
- python - 使用 Pandas 提取一列并将每个索引添加到一个句子中,然后根据条件增加字符串集。Python 还是 Pandas 更好?
- javascript - 如何正确显示对称且大小相等的一组图像?
- node.js - 使用 NodeJs 创建带有 XML 和 XSL 数据的 PDF