Kotlin Koin注入WorkManager

Kotlin Koin注入WorkManager,kotlin,androidx,koin,Kotlin,Androidx,Koin,我有一个基础工作经理 class BackgroundSyncWorker ( appContext: Context, workerParams: WorkerParameters ): Worker(appContext, workerParams) { override fun doWork(): Result { return Result.success() } } 我想将我的存储库注入其中,以便在数据库中执行一些工作。我已经正确地设

我有一个基础工作经理

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

    override fun doWork(): Result {
        return Result.success()
    }
}

我想将我的存储库注入其中,以便在数据库中执行一些工作。我已经正确地设置了Koin,但似乎找不到一种方法来将我的依赖注入到Worker中。我已经尝试继承KoinComponent并尝试使用它,但是
by inject()
不存在,但是有两个
by inject
方法我找不到如何使用。似乎没有任何关于如何注入管理者的信息,尽管有一些关于使用dagger的信息。

这确实有效,我只是使用了
var
而不是val

class BackgroundSyncWorker (
    appContext: Context,
    workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {

    val dataSyncRepository : DataSyncRepositoryImpl by inject()

    override fun doWork(): Result {
        return Result.success()
    }
}

我从您的代码中注意到以下几点:

这不起作用的第一个原因是,您需要从KoinComponent扩展/继承BackgroundSyncWork,从而使此BackgroundSyncWork koin知晓

class BackgroundSyncWorker (
    appContext: Context,
    workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {

val database: Database by inject()

    override fun doWork(): Result {
        return Result.success()
    }
}

第二:另外,请确保在koin模块中正确配置了数据库对象创建。它应该可以正常工作。

是的,我在下面看到:),这是一个愚蠢的错误。谢谢你!未解析的引用。由于接收器类型不匹配,以下候选项均不适用:can y post主模块配置该模块与Koin的正常模块相同