如何为 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) }
}
在 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) }
}