Наследование зависимостей в Kodein

При внедрении зависимостей с Kodein в Activity, Fragment или т.п., мы переопределяем инстанс kodein. Важно иметь ввиду, что умолчанию наследования объявленных на родительском уровне объектов не происходит.
Если вы хотите получить доступ к этим объектам, вы можете использовать метод extend

Пример

Предположим, у меня есть инстанс настроек, объявленный на уровне приложения

class App : Application(), KodeinAware {

    override val kodein = Kodein {
        import(androidXContextTranslators)
        bind<ISettings>() with singleton { Settings(this@App) }
    }

Далее в активити мы его можем получить следующим образом:

class MainActivity : Activity(), KodeinAware {

    private val appKodein by kodein(App.instance)

    override val kodein = Kodein {
        // или так: 
        // extend(appApplication.appKodein(), allowOverride = true)
        extend(appKodein)
        // после строчки выше мы наследуем все от уровня App
        //...
    }

    private val settings: ISettings by instance() // корректная инициализация зависимости



Комментариев нет


You can leave the first : )



Добавить комментарий