После трассировки кода, способ сделать это - использовать parameter
для передачи scopeId
. Для приведенного выше примера это будет
val nameScope = getKoin().createScope("SomeName", named("session"))
val presenter = get<Presenter>(parameters = { parametersOf(nameScope.id) )
Если есть квалификатор нам просто нужно отправить через них
Один пример, как показано ниже, где нам нужен параметр лямбда-выражения для отправки через scopeId
и name
спецификатора. (аргумент самоопределяем через параметры любого типа).
module {
scope(named("AScopeName")) {
scoped(qualifier = named("scopedName")) { Dependency() }
factory(qualifier = named("factoryName")) { Dependency() }
}
factory { (scopeId: ScopeID, name: String) ->
Environment(getScope(scopeId).get(qualifier = named(name)))
}
}
Тогда вызов так же прост, как показано ниже
val nameScope = getKoin().createScope("SomeName", named("AScopeName"))
val environment = get<Environment>(parameters = { parametersOf(nameScope.id, "scopedName") })
Или мы также можем
val nameScope = getKoin().createScope("SomeName", named("AScopeName"))
val environment = get<Environment>(parameters = { parametersOf("SomeName", "scopedName") })