Как получить все экземпляры, которые соответствуют заданному типу, используя инъекцию зависимости Коина (Kotlin) - PullRequest
0 голосов
/ 26 января 2019

Как добиться следующих результатов, используя Koin DI:

single { AValidator() } bind IValidator::class
single { BValidator() } bind IValidator::class
single { CValidator() } bind IValidator::class
single { DValidator() } bind IValidator::class

В классе, где я хочу ввести все валидаторы, я использую следующее:

val validators: List<IValidator> by inject()

Ожидая, что всеразличные реализации интерфейса IValidator вводятся автоматически.

Я знаю, что на самом деле поддерживается в Kodein, где вы просто сделаете:

val validators: List<IValidator> by kodein.allInstances()

Хотелось бы, чтобызнать, возможно ли это внутри Коина.

Спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Согласно документации, я могу сделать что-то вроде следующего:

 single(name = "validators") {
        listOf(AValidator(), BValidator(), CValidator(), DValidator())
    }

И получить его с помощью:

val validators: List<IValidator> by inject(name = "validators")

Пока это работает, но внедрение одного валидатора из приведенного выше списка, например, не сработает.

Для более подробной информации: https://insert -koin.io / docs / 1.0 / документация / reference / index.html

Не стесняйтесь добавлять другое решение!

...