Как передать несколько параметров для экземпляров Kodein Injected? - PullRequest
0 голосов
/ 24 сентября 2019

В Kodein у меня есть следующая привязка

    bind<AppDependent>() with multiton {
        title: String -> AppDependent(title, instance(), instance())
    }

Я мог бы создать ее, используя

private val appDependent: AppDependent by instance(arg = "My Text")

Однако, если у меня есть более одного параметра для моей привязки, например

    bind<AppDependent>() with multiton {
        title: String, something: String -> AppDependent(title + something, instance(), instance())
    }

Как я могу это создать?Я вижу, у нас есть только один arg в функции instance().

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

в следующей версии фабрики с несколькими аргументами будут устаревшими, поскольку многие люди сбивают с толку.

Мы рекомендуем использовать data classes вместо этого, например:

data class DiceParamerters(val startNumber: Int, val sides: Int)

val kodein = Kodein {
    bind<Dice>() with factory { params: DiceParameters -> RandomDice(params) }
}
0 голосов
/ 24 сентября 2019

Очевидно, что-то с M в качестве оболочки для аргументов

private val appDependent: AppDependent by instance(arg = M("abc", "def"))

Нашел ответ от https://weekly -geekly.github.io / Articles / 431696 / index.html .Не могу найти их в документации Кодейна: (

Аргументы могут доходить до 5, как указано в https://kodein.org/Kodein-DI/?6.3/core

Just like a factory, a multiton can take multiple (up to 5) arguments.

...