org.kodein.di.Kodein $ NotFoundException: найдено 2 привязки, соответствующих bind () - PullRequest
0 голосов
/ 22 декабря 2019

У меня есть интерфейс WordsDataSource, с помощью которого я реализовал два конкретных класса, а именно WordsLocalDataSource, который работает с локальной базой данных, и еще один WordsRemoteDataSource, который работает с данными в режиме онлайн на сервере. Проблема заключается в том, что я пытаюсь внедрить два класса в класс репозитория, используя абстрактное имя класса WordsDataSource вроде

DefaultWordsRepository(
     private val wordsRemoteDataSource: WordsDataSource,
     private val wordsLocalDataSource: WordsDataSource) {

и добавляя зависимости в класс приложения, например

class WordsApplication : Application(), KodeinAware {

    override val kodein = Kodein.lazy {
        import(androidXModule(this@WordsApplication))
        bind() from singleton { WordsDatabase.getInstance(instance()) }
        bind<WordsDao>() with singleton { instance<WordsDatabase>().wordsDao() }
        bind() from singleton { WordsLocalDataSource(instance()) }
        bind() from singleton { WordsRemoteDataSource() }
        bind<WordsRepository>() with singleton { DefaultWordsRepository(instance(), instance()) }
        bind() from provider { ViewModelFactory(instance()) }
    }

Затем при запускеПриложение, с которым я сталкиваюсь в журнале регистрации следующих проблем:

org.kodein.di.Kodein$NotFoundException: 2 bindings found that match bind<WordsDataSource>() with ?<WordsFragment>().? { ? }:
        bind<WordsLocalDataSource>() with singleton { WordsLocalDataSource }
        bind<WordsRemoteDataSource>() with singleton { WordsRemoteDataSource }

Я попытался обойти это, просто объявив переменные по именам соответствующих классов, например

DefaultWordsRepository(
     private val wordsRemoteDataSource: WordsRemoteDataSource,
     private val wordsLocalDataSource: WordsLocalDataSource) {

Но все еще хочучтобы узнать, есть ли какой-либо способ решить проблему.

Я использую следующие зависимости для kodein

implementation "org.kodein.di:kodein-di-generic-jvm:6.3.3"
implementation "org.kodein.di:kodein-di-framework-android-x:6.3.3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...