虽然接口(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/