gpt4 book ai didi

c# - 为什么我不应该从构造函数中调用我的依赖项?

转载 作者:太空狗 更新时间:2023-10-29 22:26:31 25 4
gpt4 key购买 nike

长期以来,我一直认为从构造函数中调出类依赖项是一种不好的做法,但昨天无法向同事阐明原因。谁能提供不这样做的充分理由?

最佳答案

Nikola Malovic 的 4th law of IoC 有几个原因:

  • 当我们使用构造函数注入(inject)编写应用程序时,我们经常创建大量的对象图,我们希望能够 create these graphs as efficiently as possible .这是 Nikola 的原始论点。
  • 在奇怪的(不推荐的)情况下,你有循环依赖,注入(inject)的依赖可能还没有完全初始化,所以在那个时候尝试调用它们的成员可能会导致异常。此问题类似于 issue of invoking virtual members from the constructor .从概念上讲,注入(inject)的依赖项相当于虚拟成员。
  • 使用构造函数注入(inject),构造函数的职责是请求和接收依赖项。因此,根据单一职责原则 (SRP),它不应同时尝试做其他事情。有些读者可能会争辩说我在这里滥用了 SRP,但我认为我只是在更细粒度的上下文中应用了基本原则。

请注意this rule是上下文相关的:它适用于使用构造函数注入(inject)的服务。实体和值对象往往不使用 DI,因此它们的构造函数受其他规则约束。

关于c# - 为什么我不应该从构造函数中调用我的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22258127/

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