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

时间:2019-09-24 14:45:47

标签: kotlin kodein

在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 个答案:

答案 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.