gpt4 book ai didi

c# - 重载和依赖注入(inject)有什么区别?

转载 作者:行者123 更新时间:2023-11-30 18:50:43 25 4
gpt4 key购买 nike

虽然接口(interface)驱动中的 DI...我仍然不清楚这与基本重载概念的确切区别。任何 C# 示例都会有所帮助。

编辑: 我在这里阅读 the reason for my question StreamReader 可以看作是 IoC/DI 的示例...这与重载有何不同?或者它只是 DI 的外观而不完全是 DI?

最佳答案

它们是完全不同的概念。

重载:提供多个具有相同名称(或构造函数)但参数数量和/或类型不同的方法。

依赖注入(inject):为组件提供它们需要使用的所有服务(例如身份验证器、数据库连接等),而不是让它们自己构建这些依赖项。 DI 鼓励接口(interface)和实现之间的清晰分离,并使单元测试更加容易(因为您可以模拟/伪造依赖项)。

编辑:我不认为我通常会使用 StreamReader 作为依赖注入(inject)的一个很好的例子——特别是,它可以为你创建自己的流,如果你只指定一个文件名。可以说,带有 Stream 参数的重载实际上允许注入(inject)流依赖性,但这不是我通常认为的 DI。构造函数当然是重载的一个例子 - 但两者实际上无关。

通常我会从服务的角度来考虑 DI - 比如身份验证器,或者可能是链中的下一个服务(例如,请求经历多个阶段)。

关于c# - 重载和依赖注入(inject)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com