Kodein 工厂绑定抛出 NotFoundException
Kodein factory bindings is throwing NotFoundException
我不知道这是一个错误还是我做错了。我在文档中没有看到任何内容表明应该以除此之外的任何方式调用 kodein 工厂绑定:
class KodeinConfidenceTest {
@Test
fun testThatKodeinWorks() {
val kodein = Kodein {
bind<Dice>() with factory { sides: Int -> RandomDice(sides) }
}
val d:Dice = kodein.instance(5)
}
}
open class Dice
data class RandomDice(val sides:Int) : Dice()
...但这会导致 NotFoundException
com.github.salomonbrys.kodein.Kodein$NotFoundException: No provider found for bind<Dice>("5") with ? { ? }
Registered in Kodein:
bind<Dice>() with factory { Int -> RandomDice }
你永远不应该写kodein.instance(5)
,你应该写kodein.instance(tag = 5)
现在您看到了您的错误。您正在设置标签(区分绑定),而不是工厂的参数。
在 Kodein 4 中,语法是 kodein.with(5).instance()
或 kodein.factory<Int, Dice>().invoke(5)
我目前正在开发 Kodein 5(尚无发布时间表),其中此语法将更改为 kodein.instance(arg = 5)
。
接受的答案在 Kodein 5 (5.3.0) 中对我不起作用。下面做了。
class Die(val sides: Int)
fun main(args: Array<String>) {
val kodein = Kodein {
bind<Die>() with factory { sides: Int -> Die(sides) }
}
val die: Die by kodein.instance { 20 }
println("Sides ${die.sides}")
}
我不知道这是一个错误还是我做错了。我在文档中没有看到任何内容表明应该以除此之外的任何方式调用 kodein 工厂绑定:
class KodeinConfidenceTest {
@Test
fun testThatKodeinWorks() {
val kodein = Kodein {
bind<Dice>() with factory { sides: Int -> RandomDice(sides) }
}
val d:Dice = kodein.instance(5)
}
}
open class Dice
data class RandomDice(val sides:Int) : Dice()
...但这会导致 NotFoundException
com.github.salomonbrys.kodein.Kodein$NotFoundException: No provider found for bind<Dice>("5") with ? { ? }
Registered in Kodein:
bind<Dice>() with factory { Int -> RandomDice }
你永远不应该写kodein.instance(5)
,你应该写kodein.instance(tag = 5)
现在您看到了您的错误。您正在设置标签(区分绑定),而不是工厂的参数。
在 Kodein 4 中,语法是 kodein.with(5).instance()
或 kodein.factory<Int, Dice>().invoke(5)
我目前正在开发 Kodein 5(尚无发布时间表),其中此语法将更改为 kodein.instance(arg = 5)
。
接受的答案在 Kodein 5 (5.3.0) 中对我不起作用。下面做了。
class Die(val sides: Int)
fun main(args: Array<String>) {
val kodein = Kodein {
bind<Die>() with factory { sides: Int -> Die(sides) }
}
val die: Die by kodein.instance { 20 }
println("Sides ${die.sides}")
}