c# - 在 DI 模式的上下文中,“绑定”是什么意思?
问题描述
binding
在 DI 模式的上下文中是什么意思?
我正在通过这里IoC
的教程。我遇到了以下摘录:
依赖注入 (DI) 是一种用于实现 IoC 的设计模式。它允许在类之外创建依赖对象,并通过不同的方式将这些对象提供给类。使用 DI,我们将依赖对象的创建和绑定移到依赖它们的类之外。
我不明白这里指的是什么绑定?
我猜这里提到的绑定是关于设置客户端类字段的。但在这种情况下,我们不会使用 DI 移动这样的绑定。因为,DI有三种使用方式:构造函数、属性(setter)和方法。并且所有这些方式都不会将绑定(客户端类字段的分配)移动到类之外,所有这些都发生在客户端类的范围内。所以,我在这里很困惑。
更新在对这个问题提供了一些答案后,我得出一个结论,即绑定是 什么有两种可能的定义。
1绑定意味着将依赖类内部使用的接口映射到实际的对象类型。
2绑定意味着将实际类型作为接口参数的实参传递到依赖类中。
正确的定义1或2是什么?还是绑定的定义取决于提到绑定的上下文?
解决方案
绑定是什么意思?
这意味着我们的依赖类将由 IoC 容器自动解析。
例如:
我们有IRepository interface
和Repository class
.
如果我们将这两者绑定在一起。每次我们请求IRepository
,我们的容器都会自动为我们提供Repository
类。
这使得更改 Repository 类的实现变得非常容易。因为我们不是立即依赖它。我们从不说新的存储库类。我们只提供接口,其他一切都由容器处理。例如,您可以说 IRepository 绑定到 DatabaseRepository 类。只需更改您的容器绑定即可。
这一切都是由于 IoC 容器中的绑定而发生的。这为您的应用程序提供了很大的灵活性。
此外,我们可以在容器中使用绑定命令可以为我们的对象提供生命周期,通常是这三个(Singleton、PerInstance、Scoped)。
推荐阅读
- java - Cucumber - Java - 标识符中的非 ASCII 字符
- pandas - koalas 列赋值不支持类型ndarray
- python - 制作图像时如何重新排列像素
- kubernetes - Terraform 应用抛出错误“等待插件启动时超时”
- azure - 用于在资源组参与者中自动添加用户组的 Azure 策略
- javascript - 周开始数组 javascript 直到 X 天
- node.js - 如何引用节点模块中包含的 nunjucks 模板?
- javascript - 如何为 Promise.resolve().then() 使用异步替代方案?
- ruby-on-rails - Ruby - 有没有办法获取特定未来时间的时间戳,但取决于时区
- ios - Swift 编程约束不起作用