首页 > 解决方案 > 在用例的构造函数中注入接口

问题描述

我有一个界面:

interface CartonRepository {
    fun addToCart(company: Company): Completable
}

现在我想在我的用例中使用这个接口:

class ObserveCartonItemSelectionUseCase
@Inject constructor(private val cartonRepository: CartonRepository) : ObservableUseCase<UUID, Boolean> {

}

这个用例通过以下方式注入其他类:

@Inject
protected lateinit var observeCartonSelectionUseCase: ObserveCartonItemSelectionUseCase

我收到一个错误:

ApplicationComponent.java:13: error: CartonRepository cannot be provided without an @Provides-annotated method.
    public abstract void inject(@org.jetbrains.annotations.NotNull()

标签: androiddagger-2

解决方案


该错误准确地说明了应该做些什么来提供CartonRepository. 向您的界面添加@Provides注释:

@Provided
interface CartonRepository {
fun addToCart(company: Company): Completable

}

这将告诉 Dagger 这个接口应该是可注入的。


推荐阅读