首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kodein工厂绑定正在抛出NotFoundException

Kodein工厂绑定正在抛出NotFoundException
EN

Stack Overflow用户
提问于 2017-10-11 13:01:33
回答 2查看 1.1K关注 0票数 0

我不知道这是个窃听器还是我做错了。我在文档中没有看到任何说明应该以任何方式调用kodein工厂绑定的地方,只有这样:

代码语言:javascript
复制
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()

...but --这会导致NotFoundException

代码语言:javascript
复制
com.github.salomonbrys.kodein.Kodein$NotFoundException: No provider found for bind<Dice>("5") with ? { ? }
Registered in Kodein:
    bind<Dice>() with factory { Int -> RandomDice } 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 08:39:42

你不应该写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)

票数 2
EN

Stack Overflow用户

发布于 2018-10-04 09:00:19

在Kodein 5 (5.3.0)中,接受的答案对我不起作用。下面的是。

代码语言:javascript
复制
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}")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46688887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档