Есть ли способ реализовать концепцию Dagger SubCompoent на Koin?
Я хочу использовать экземпляр из родительской области видимости.
app_modules.kt
val favoriteModule = module {
scope(named<FavoriteFragment>()) {
scoped { GetFavoriteMovies(get()) }
scoped { FavoriteVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
}
}
val popularModule = module {
scope(named<PopularFragment>()) {
scoped { GetPopularMovies(get()) }
scoped { PopularVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
}
}
val searchModule = module {
scope(named<SearchFragment>()) {
scoped { SearchMovies(get()) }
scoped { SearchVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
}
}
val mainModule = module {
scope(named<MainActivity>()) {
scoped { MovieEntityMovieMapper() }
// this ImageLoader also injected by Fragments
scoped<ImageLoader> { (activity: Activity) -> GlideImageLoader(activity) }
}
}
Используя Dagger, это можно сделать с помощью SubComponent или Component Dependency.
Но в Коине (особенно 2.0) я не могу найти способ.
В некоторых ответах сказано, что использовать GlobalContext.get().koin.getScope("Parent").get<>()
.
https://github.com/InsertKoinIO/koin/issues/513
Обмен экземплярами Koin между модулями
но я не думаю, что это не чистый подход и внедрение зависимостей.