Kodein工厂绑定抛出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(没有发布schdule),其中这个语法将被改为kodein.instance(arg = 5)