требуется: KodeinBinding - PullRequest
       17

требуется: KodeinBinding

0 голосов
/ 24 сентября 2019

Исследуя Кодейн, я следую примеру в https://proandroiddev.com/dependency-injection-with-kotlin-kodein-koin-3d783745e48d

val diModel = Kodein.Module {
    bind<TasksRepository>() with singleton {
        FakeTasksRepository()
    }
}

Я получил ошибку

Type inference failed. Expected type mismatched:
required: KodeinBinding<in ???, in ???, out TaskRepository>
found:    (Mutable)set<(() -> FakeTaskRepository)!>!

Что не так?

К вашему сведению,Я использую kodeIn версии 6.4.0

Добавить, я попробовал пример из https://kodein.org/di/

val businessModule = Kodein.Module {
    bind<IService>() with singleton { BusinessService() }
}

То же самое происходит.Я сделал что-то не так?Или документация устарела?

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

вот полный рабочий пример:

import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.generic.singleton

interface TasksRepository {
    fun log(): String = "EMPTY"
}
class FakeTasksRepository : TasksRepository {
    override fun log(): String = "Hello Kodeiners!"
}

val diModel = Kodein.Module("diModel") {
    bind<TasksRepository>() with singleton {
        FakeTasksRepository()
    }
}

fun main() {
    val kodein = Kodein {
        import(diModel)
    }

    val tasksRepository: TasksRepository by kodein.instance()
    println(tasksRepository.log())
}
0 голосов
/ 24 сентября 2019

Нашел проблему.Я случайно включаю

import java.util.Collections.singleton

вместо

import org.kodein.di.generic.singleton

...