问题标签 [kodein]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
392 浏览

dependency-injection - 如何获取一种类型的绑定单例实例列表?

给定一个kodein实例:

有没有办法从 kodein 获取 A、B、C 而不是 D 的实例?

我得到的最接近的是:

设置绑定没有什么帮助,因为我无法将单个实例绑定为 set-enabled-type 并且我希望将其绑定为:

原因Exception in thread "main" java.lang.IllegalStateException: No set binding to bind<Set<out A>>() with ? { ? }

这解决了这个问题,但很丑陋:

0 投票
2 回答
677 浏览

android - 如何将依赖项覆盖到真正的kodein应用程序依赖图中?

我正在尝试进行一些测试,我需要通过在 KODEIN 上覆盖它来替换真正的依赖项,但它不起作用,我不知道我还能做什么。

这是我的依赖关系图(我省略了其他依赖关系):

这是我的应用程序类:

这是我为覆盖依赖项所做的工作:

我仍然在控制台日志中看到“RetrieveContacts REAL”而不是“RetrieveContacts FAKE”

0 投票
1 回答
339 浏览

dependency-injection - 有没有办法在 kotlin kodein 中创建一个可以产生 null 的工厂绑定?

有没有办法创建一个可以产生 null 的工厂绑定?

例如,

不幸的是,bind<String?>给出了错误。

0 投票
1 回答
605 浏览

android - Kodein 使用泛型绑定依赖

我尝试通过以下方式绑定依赖项

但我收到以下错误

java.lang.IllegalArgumentException: bind<LocalDataSource<T>>() uses a type variable named T, therefore, the bound value can never be retrieved.

我想导入模块并获得所需的依赖项,而无需每次都重复相同的绑定。

有没有办法做到这一点?

0 投票
1 回答
638 浏览

kotlin - 使用 Kodein 将对象实例传递给构造函数

我是 Kotlin 和 Kodein 的新手。我正在尝试使用 Java 库,并且需要将单例传递给我的一个构造函数。我不知道如何获得一个实际的实例。由于我需要将实例传递给构造函数,我相信我需要使用 DKodein,所以不使用延迟加载?

有没有简单的方法来实现这一点?还是我以错误的方式解决这个问题?

谢谢。

0 投票
1 回答
212 浏览

kotlin - 关闭/关闭 Kodein 上下文

假设在我的应用程序中,我维护了一些 Kodein 上下文,并且 Kodein 上下文中有一些共享资源,当不再需要它所属的上下文时,我想关闭这些资源。

下面是问题的简单说明:

理想情况下,应该实现几个属性:

  • 只检索已经初始化的 Closeable 实例并关闭它们
  • SomeService并且SomeOtherService不应该负责关闭SomeConnectionPool,因为他们没有创建实例。他们也不知道该池是否仍在被其他东西使用。

我还考虑只从 kodein.container 中检索已初始化的绑定,但似乎没有明显的方法可以这样做。

0 投票
1 回答
8648 浏览

android - Koin vs Kodein - 依赖注入你更喜欢什么?科特林

你更喜欢 Kotlin 的 Android 依赖注入是什么?我已经开始使用 Kodein,但如果 Koin 更好,我不想浪费我的时间。

我已经阅读了 Makery Kotlin Development 的这个演示文稿https://www.kotlindevelopment.com/koin-vs-kodein/,它真的很棒。

从那个演示来看,这些是差异:

科登

  • 强大的
  • 大量功能
  • 很棒的文档
  • 更复杂的 API

科因

  • 较小
  • 较少的功能
  • 天然原料药

Github 明星 Kodein 1164 vs 1350 Koin


谢谢 !!

0 投票
1 回答
605 浏览

kotlin - Kodein 清理/销毁方法

我正在Kodein.global为我的 LibGDX 项目使用 kodein(变体)。许多 LibGDX 对象都有自己的清理方法(disposeDisposable接口),这些方法在对象不再使用并准备好进行 GC 清理(切换屏幕、退出等时)后调用。我希望在 kodein 执行清理时完成这些调用。

我浏览了 Kodein 文档,但找不到任何对清理方法的引用,比如 Java EE@PreDestroy或 Spring beandestroy-method方法。

Kodein 没有这种功能还是我错过了什么?

0 投票
0 回答
196 浏览

android - 如何使用 Kotlin 调用返回模块类型的方法?

我有两个文件one.kttwo.kt我在one.kt文件中有内部类。我想在执行某些操作时调用该内部类,例如在 Two.kt 文件中单击按钮。我尝试了一些调用内部类的方法,但方法不调用。请指导我我有什么错误。来自文件的One.kt文件调用manifest。像这样,

一.kt:

二.kt:

一些博客说你可以使用它来调用这种类型的方法,但我不知道如何在 Activity 类中使​​用,因为它没有扩展 Application 类。

我将此代码包含在我的 One.kt 文件中,我想从 Two.kt 文件中调用是否可能?请告诉我

这样对吗 ?像这样调用 val dd = One().CallmyClass().CallMyMethod(1)。但它没有调用我的方法,因为上面的方法是使用 KodeinAware 返回模块类型。

参考:https ://proandroiddev.com/dependency-injection-with-kotlin-kodein-koin-3d783745e48d

更新:

0 投票
1 回答
123 浏览

android - 如何在 kodein 中调用的第二时间重新绑定模块?

我有一个android应用程序,它是在 kotlin 中开发的,我们也使用kodein依赖项来绑定数据。当第一次绑定数据时,它会正确绑定,但在第二次调用时不会绑定。

问题是,第一次绑定时,此代码将执行

"InitializingCurrentAddressProvider()"这个类调用并成功执行。

但是当我尝试调用这些线路时

在第二次执行该行但

"InitializingCurrentAddressProvider()"这个类不执行。这就是问题所在,如果第二个类是执行意味着我将得到结果,那么结果将自动绑定。但它不执行。