Как в модуле DI передать свойство класса в другой класс из этого же модуля в koin?

Всем привет! есть класс:

class ViewModel( private val dataSourceFactory: DataSourceFactory, application: Application) {

    val compositeDisposable = CompositeDisposable()

    fun onCleared() {
       super.onCleared()
       compositeDisposable.clear()
    }
}

модуль класса создается через DI, при помощи koin:

viewModel { ViewModel(get (), androidApplication()) }
single { DataSourceFactory(get() }
single { DataSource()}

, как мне передать свойство compositeDisposable в класс DataSource для отписки?


Ответы (1 шт):

Автор решения: Сергей Бувака

В данной реализации вы этого сделать нет сможете.

Здесь есть два пути:

  1. Вы можете создавать ваш CompositeDisposable где-то снаружи в модуле DI и затем передавать его как зависимость. Но я так понимаю этот вариант вам нет подойдёт.

  2. Вы можете в вашем DataSourse в конструкторе создать зависимость от CompositeDisposable и передать ее как динамический параметр, но тогда вам придется создавать ваш DataSourse непосредственно во ViewModel, а нет через конструктор.

Вот тут можно посмотреть как в коин добавлять параметры динамически https://medium.com/koin-developers/koin-0-9-0-getting-close-to-stable-release-74df9bb9e181

→ Ссылка