Dagger 问题 - 生成用例有错误

Dagger Issue - Generate useCase has error

我创建了我的用例并设置了输入和输出,然后在模块上提供它,一切正常。


class GetProfileUseCase constructor(
    private val repository: Repository,
    defaultDispatcher: CoroutineDispatcher
) : SuspendUseCase<Request, ResultEntity<Response>>(defaultDispatcher) {

    override suspend fun execute(parameters: Request): ResultEntity<Response> {
        return repository.getProfile(parameters)
    }
}

这是我的数据class


sealed class GetProfile : Serializable {

    data class Request(
        val nothing: Nothing? = null
    ) : GetProfile()

    data class Response(
        val user: User? = User()
    ) : GetProfile()
}

因为请求中没有参数 class 我尝试将其更改为:

object Request

但是构建时 IDE 错误:

错误:在 class ViewModel_Factory 中创建的方法无法应用于给定类型;

这是我的视图模型:

class ViewModel @Inject constructor(
    private val getProfileUseCase: GetProfileUseCase
) : BaseViewModel()

我不知道为什么会这样,dagger 无法生成 classes !!!

将 Request 设置为数据 class 时它可以正常工作,但在将其设为对象时会崩溃 class

because there is no parameter in Request class i tried changed it to : object Request

您似乎认为 object 与具有单个无参数 constructorclass 相同,这是不正确的。为了完全理解,我鼓励您阅读 线程。 但是,我将尝试提供一个简短的解释,说明为什么您的代码不起作用

当您执行 object Request 时,它会使 Request 成为 singleton,这意味着您不能再使用 val instance = Request() 创建它的 instances,原因是Requestconstructor 被 kotlin 编译器标记为私有。

因此,当您的代码 (dagger) 尝试使用 new Request() 注入 Request 时,它会给您错误。