0

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

4

2 回答 2

1

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

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

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

val kodein = Kodein {
    bind<Dice>() with factory { params: DiceParameters -> RandomDice(params) }
}
于 2019-09-25T05:08:13.207 回答
0

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

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

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

如https://kodein.org/Kodein-DI/?6.3/core中所述,参数最多可达到 5 个

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

于 2019-09-24T14:58:31.703 回答