在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()
。
答案 0 :(得分:1)
在下一版本中,不赞成使用多参数工厂,因为这会使很多人感到困惑。
我们建议改用data classes
,例如:
data class DiceParamerters(val startNumber: Int, val sides: Int)
val kodein = Kodein {
bind<Dice>() with factory { params: DiceParameters -> RandomDice(params) }
}
答案 1 :(得分:0)
显然有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.