gpt4 book ai didi

c# - 如何修复 'microsoft.maintainability' 构建错误?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:22 29 4
gpt4 key购买 nike

我有一个 Controller ,其中包含一些私有(private)只读接口(interface)属性,它需要这些属性才能通过调用服务来获取数据,然后用于填充模型等

private readonly ISomeInterface _someObject;

在 Controllers 构造函数中设置:

public ... (ISomeInterface someInterface, ...) {
...
_someObject = someObject
}

_someObject 然后用于调用服务层以获取数据。

我必须向 Controller 添加另一个属性,但现在当我构建解决方案时,出现以下错误:

CA1506 : Microsoft.Maintainability : 'ControllerName' is coupled with 87 different types from 30 different namespaces. Rewrite or refactor this class's methods to decrease its class coupling, or consider moving some of the class's methods to some of the other types it is tightly coupled with.

它要求我减少类的耦合,我知道这样做的一种方法是针对接口(interface)(抽象)进行编码——我已经通过添加接口(interface)属性来做到这一点?似乎通过再添加一个属性,它可以超过标记此错误的阈值。

如果我删除它,我无法获得我需要的数据?我需要修改什么?

最佳答案

您的 Controller 有多少个 Action ?你有每个 Action 的 View 模型吗?你有每个 Action 的输入模型吗?您是否为每个 Controller 操作与不同的类进行交互?您可能需要将您的 Controller 拆分为多个 Controller ,以减少它做的事情,从而减少更改的理由和更少的依赖性。尽管使用接口(interface)会将 Controller 与 ISomeInterface 的特定实现分离,但它不会根据该警告执行任何操作。更改为使用接口(interface)并没有减少类型的数量……它只是从具体类型更改为接口(interface)类型。

问题是警告不要让一个类做很多事情。有很多依赖关系表明这个类做的太多了,应该分开。例如,如果这个 Controller 已经为“烤馅饼”、“吃馅饼”、“做冰淇淋”和“送食物”说了一个 Action ,你可以将“送食物”移动到一个全新的类......你可以打破也做冰淇淋,然后你会评估烤馅饼和吃馅饼是应该放在同一个类(class)还是放在不同的类(class)。馅饼辩论打开了人们争论的一大堆蠕虫。

参见:SOLID (object-oriented design)

您的代码是否必须调用 2 个或更多不同的数据访问类,然后调用另一个类来创建 View 模型。您可以将整个操作移至一个新类,从而将对 3 个类的依赖减少到 1 个。

关于c# - 如何修复 'microsoft.maintainability' 构建错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13086276/

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