如何为 Kodein 注入实例传递多个参数?

How to pass multiple parameter for Kodein Injected instances?

在 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())
    }

如何实例化它?我看到 instance() 函数中只有一个 arg

显然有一些东西用 M 作为参数的包装器

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

https://weekly-geekly.github.io/articles/431696/index.html找到了答案。在 Kodein 文档中找不到它们:(

参数最多可以有 5 个,如 https://kodein.org/Kodein-DI/?6.3/core

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

在下一个版本中,多参数工厂将被弃用,因为它会让很多人感到困惑。

我们建议改用 data classes,例如:

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

val kodein = Kodein {
    bind<Dice>() with factory { params: DiceParameters -> RandomDice(params) }
}