Как получить доступ к экземпляру из одного модуля Kodein в другом модуле? - PullRequest
0 голосов
/ 21 апреля 2020

При использовании Kodein, если у меня есть 2 модуля и module B необходимо использовать экземпляр из module A, лучше ли импортировать module A в module B или есть лучший способ сделать это?

Например, у меня есть networkingModule:

val networkingModule = Kodein.Module("networking") {
    bind<Retrofit>() with singleton {
        Retrofit.Builder()
            .baseUrl("https://api.example.com/")
            .build()
    }
}

И subscribersModule нужен экземпляр Retrofit из networkingModule:

val subscribersModule = Kodein.Module("subscribersModule") {
    import(networkingModule)
    bind<SubscribersService>() with singleton {
        instance<Retrofit>().create(SubscribersService::class.java)
    }
}

Добавляется import(networkingModule) в subscribersModule лучший способ сделать это?

1 Ответ

0 голосов
/ 21 апреля 2020

В конце концов, если ваши модули используются в одном проекте, вы не обязаны делать их зависимыми.

Вместо этого вы можете импортировать их в глобальный контейнер, например:

val applicationContainer = Kodein {
    import(subscribersModule)
    import(networkingModule)
    // ...
}

Kodein-DI решит для вас зависимости.

...