首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >**bind()与**和**bind()之间的差异

**bind()与**和**bind()之间的差异
EN

Stack Overflow用户
提问于 2020-02-11 07:24:26
回答 2查看 153关注 0票数 3

在研究kodein时,我经常看到bind()使用bind()来自

有谁能告诉我有什么区别吗?为什么我们要用它。

例如:

代码语言:javascript
复制
    bind<Dice>() with provider { RandomDice(0, 5) }
    bind<DataSource>() with singleton { SqliteDS.open("path/to/file") }
代码语言:javascript
复制
    bind() from singleton { RandomDice(6) }
    bind("DnD20") from provider { RandomDice(20) }
    bind() from instance(SqliteDataSource.open("path/to/file"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-16 13:54:24

bind<Type>() with显式地定义了Type 。例如,当您将接口类型绑定到它的实现时,这一点很重要:

代码语言:javascript
复制
bind<Type>() with singleton { TypeImpl() }

现在考虑绑定一个非常简单的类型,例如配置数据对象:

代码语言:javascript
复制
bind<Config>() with singleton { Config("my", "config", "values") }

您已经编写了两次Config:一次在绑定定义中,一次在绑定本身中。

输入bind() from:它不定义类型,但将绑定类型的选择留给绑定本身。绑定类型定义为隐式。例如,您可以这样编写Config绑定:

代码语言:javascript
复制
bind() from singleton { Config("my", "config", "values") }

请注意,将类型绑定到自身(这就是bind() from的作用)通常是个坏主意(它违背了IoC模式),应该只用于非常简单的类型,比如数据类。

票数 0
EN

Stack Overflow用户

发布于 2020-02-11 07:58:40

使用

使用is,TypeBinder是类型绑定(通过泛型)与给定标记&类型(是必需的)。

从…

from is DirectBinder是与给定的标记直接绑定(不是必需的类型)。它将被定义类型依赖于类型的工厂.

每个绑定器之间的差异只是类型推断的方式。因此,您可以在声明模块时使用更有效的绑定器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60163838

复制
相关文章

相似问题

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