繁体   English   中英

如何使用hilt在普通类中注入Repository

[英]How to inject Repository in ordinary classes using hilt

我的资料库

class MyRepository @Inject constructor(
    private val myDao: IMyDao
){    
   ...
}

我的模块

@InstallIn(SingletonComponent::class)
@Module
class MyModule {   

    @Provides
    fun provideMyRepository(MyDao: IMyDao): MyRepository{
        return MyRepository(MyDao)
    }

}

在工人中使用

class MyWorker(appContext: Context, workerParams: WorkerParameters) :
    Worker(appContext, workerParams) {

    private val myRepository: MyRepository =
        EntryPointAccessors.fromApplication(appContext, MyRepository::class.java)
}

在应用程序 class 中启动 worker。

但出现错误: java.lang.ClassCastException: Cannot cast com.freedom.android.DaggerMyApplication_HiltComponents_SingletonC$SingletonCImpl to com.freedom.android.MyRepository

我看了相关的文档。但是我不想使用这个接口,我只想提供class。

请告诉我问题是什么。

在这种情况下,您需要使用 hilt worker

  @HiltWorker class WokerName @AssistedInject constructor(
       @Assisted appContext: Context,
       @Assisted params: WorkerParameters,
       myRepository: MyRepository): CoroutineWorker(appContext, params)

Go 通过下面的所有链接,您将获得所有 gradel 依赖项,如何使用它们等。

https://developer.android.com/training/dependency-injection/hilt-jetpack#kotlin https://developer.android.com/reference/androidx/hilt/work/HiltWorker 8810563352.888278828//6developer指南/背景/持久/配置/自定义配置https://developer.android.com/topic/libraries/app-startup

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM