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

ca1c2owp  于 2023-01-21  发布在  Kotlin
关注(0)|答案(1)|浏览(356)

我的知识库

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)
}

在应用程序类中启动工作进程。
但出现错误:java.lang.ClassCastException: Cannot cast com.freedom.android.DaggerMyApplication_HiltComponents_SingletonC$SingletonCImpl to com.freedom.android.MyRepository
我看了相关的文档。但是我不想使用接口,我只想提供类。
请告诉我有什么问题。

weylhg0b

weylhg0b1#

在这种情况下你需要使用剑柄工

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

通过下面的所有链接,您将获得所有的gradel依赖项,如何使用它们等。
https://developer.android.com/training/dependency-injection/hilt-jetpack#kotlin 一章第一章第二章

相关问题