我创建了我的用例并设置了输入和输出,然后在模块上提供了它,一切正常。
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)
}
}
这是我的数据类
sealed class GetProfile : Serializable {
data class Request(
val nothing: Nothing? = null
) : GetProfile()
data class Response(
val user: User? = User()
) : GetProfile()
}
因为请求类中没有参数,我尝试将其更改为:
object Request
但当生成ide错误时:
错误:在类viewmodel\u工厂中创建的方法不能应用于给定的类型;
这是我的视图模型:
class ViewModel @Inject constructor(
private val getProfileUseCase: GetProfileUseCase
) : BaseViewModel()
我不知道为什么会这样,匕首不能生成类!!!
当将请求设置为数据类时,它不会出错,但当将其设置为对象类时,它会崩溃
1条答案
按热度按时间ckocjqey1#
因为请求类中没有参数,所以我尝试将其更改为:object request
你好像认为
object
与a相同class
只有一个no参数constructor
,这不是真的。为了完全理解,我鼓励你阅读这篇文章。然而,我将试图提供一个简短的解释,为什么你的代码不工作当你这么做的时候
object Request
,它使Request
一个单例,意味着你不能再创建它的instances
使用val instance = Request()
,原因是constructor
的Request
由kotlin编译器标记为private。所以当你的代码(
dagger
)试图注射Request
使用new Request()
,它会给你错误。