【问题标题】:How should I pass Dependencies to my Class?我应该如何将依赖项传递给我的类?
【发布时间】:2021-01-02 03:38:22
【问题描述】:

我有一个类依赖于通过 Autofac 注入的大量依赖项。 这是一个例子:

public MyService(
        IService1 service1,
        IService2 service2,
        ...)
        {
          _service1 = service1;
          _service2 = service2
        }

我需要传递大约 10 个依赖项。我们现在实现了 SonarQube,抱怨很多 Constructor 参数。

是否有另一种“更好/首选”的方式来传递这些依赖项以使 SonarQube 满意?

【问题讨论】:

  • 将它们捆绑到一个类 DependencyPackage 中,你只有一个参数。 SonarQube 可能会更快乐 ;)
  • @Mong 这只是在推卸责任。现在DependencyPackage 的构造函数将具有相同数量的参数...
  • 如果一个类有 10 个依赖项,它可能做的太多,因此难以维护和测试,这正是 SonarQube 试图告诉你的。您需要对其进行重构以消除此警告。
  • 您是否真的因为依赖的数量而遇到问题?代码分析应该是一种工具,可以帮助突出显示由于某种原因而有问题的代码。所以问题应该是如何让快乐,而不是SonarQube。
  • @CodeCaster “这只是在推卸责任。”,“如果一个类有 10 个依赖项,它可能做的太多,因此难以维护和测试,”真实的话!谢谢提醒

标签: c# dependency-injection sonarqube autofac


【解决方案1】:

虽然检查你的依赖布局以确保你的依赖“树”尽可能简单总是好的,但有时你只需要传入相当多的依赖。

为了帮助简化这一点,您可以考虑使用Aggregate Services 包。

它将允许您定义一个包含依赖项的接口,然后注入该接口,而无需自己定义整个其他类。

【讨论】:

  • 这听起来不错,似乎暂时解决了我的问题,直到我们进行全面重构
猜你喜欢
  • 2020-10-24
  • 1970-01-01
  • 2010-09-27
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多