Los enlaces de fábrica Kodein están lanzando NotFoundException

No sé si esto es un error o simplemente lo estoy haciendo mal. No veo nada en la documentation que diga que las ataduras de la fábrica de kodein deben llamarse de otra forma que no sea esto:

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() 

… pero esto causa una NotFoundException

 com.github.salomonbrys.kodein.Kodein$NotFoundException: No provider found for bind<Dice>("5") with ? { ? } Registenetworking in Kodein: bind<Dice>() with factory { Int -> RandomDice } 

Nunca debe escribir kodein.instance(5) , debe escribir kodein.instance(tag = 5)

Ahora ves tu error. Está configurando la label (que diferencia los enlaces), no el argumento de fábrica.

En Kodein 4, la syntax es kodein.with(5).instance() o kodein.factory<Int, Dice>().invoke(5)

Actualmente estoy desarrollando Kodein 5 (sin schdule de lanzamiento aún), en el que esta syntax se cambiará a kodein.instance(arg = 5) .

  • Declaración "Cuando" statement vs Java "cambiar"
  • Android Kotlin no puede usar list.sort () con lambda
  • Kotlin y ejemplificación de matriz detallada
  • ¿Cómo puedo usar más fácilmente las transactions de Jooq en Kotlin?
  • Escriba desajuste. Mapa obligatorio <String, Any> Found Map <String, Any?>
  • La inferencia del tipo Java lambda no funciona como se esperaba en Kotlin
  • Kotlin sincronizado
  • ¿Constructor de tipo constructor? ¿Cómo traducir eso a kotlin?
  • ¿Cómo corotines de Kotlin son mejores que RxKotlin?
  • Kotlin: ¿por qué usar classs abstractas (frente a interfaces)?
  • Reemplazar 'writeToParcel' no está permitido. Use el object compañero 'Parceler' en su lugar