首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造器注入Kodein$NotFoundException

构造器注入Kodein$NotFoundException
EN

Stack Overflow用户
提问于 2018-10-05 20:20:12
回答 1查看 724关注 0票数 0

由于某些原因,我无法让构造函数注入与Kodein一起工作。

这是用于复制异常的代码:

代码语言:javascript
复制
import org.kodein.di.Kodein
import org.kodein.di.direct
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.generic.provider

fun main(args: Array<String>) {
    val kodein = Kodein {
        bind<Test2>() to provider { Test2() }
        bind<Test>() to provider { Test(instance()) }
    }

    val test = kodein.direct.instance<Test>()
}

class Test(val test2: Test2)
class Test2

例外情况:

代码语言:javascript
复制
Exception in thread "main" org.kodein.di.Kodein$NotFoundException: No binding found for bind<Test>() with ? { ? }
Registered in this Kodein container:

    at org.kodein.di.internal.KodeinContainerImpl.factory(KodeinContainerImpl.kt:174)
    at org.kodein.di.KodeinContainer$DefaultImpls.factory$default(KodeinContainer.kt:33)
    at org.kodein.di.KodeinContainer$DefaultImpls.provider(KodeinContainer.kt:80)
    at org.kodein.di.internal.KodeinContainerImpl.provider(KodeinContainerImpl.kt:7)
    at org.kodein.di.KodeinContainer$DefaultImpls.provider$default(KodeinContainer.kt:79)
    at org.kodein.di.internal.DKodeinBaseImpl.Instance(DKodeinImpl.kt:33)
    at AppKt.main(App.kt:20)

为什么这个不行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-06 07:17:50

代码语言:javascript
复制
bind<Test2>() to provider { Test2() }
              ^^

这是Kotlin的to函数,它生成一个Pair,与Kodein的DSL :p无关

Kodein的DSL使用with

代码语言:javascript
复制
bind<Test2>() with provider { Test2() }
              ^^^^

请注意,在将类型绑定到自身时,可以使用更简单的语法:

代码语言:javascript
复制
bind() from provider { Test2() }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52672804

复制
相关文章

相似问题

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