Visual Studio 代码分析错误 CA 1006
Posted
技术标签:
【中文标题】Visual Studio 代码分析错误 CA 1006【英文标题】:Visual Studio Code Analysis Error CA 1006 【发布时间】:2014-07-28 05:43:43 【问题描述】:每当我们在接口契约中定义自定义定义时,代码分析都会抛出错误CA1006: Do not nest generic types in member signatures。处理这个所谓的设计问题的最佳方法是什么。对此有任何深刻的想法。
感谢您抽出宝贵的时间来解决这个问题。
例子:-
Task<IList<Employee>> LoadAllEmployeeAsync();
【问题讨论】:
看看here和here这两个类似的问题。 【参考方案1】:CA1006: Do not nest generic types in member signatures
我认为规则很明确。然而,其背后的原因是,无论谁使用您的类,都必须经历一个复杂的过程来实例化复杂的parameter(s),并降低新库的采用率。
但是,如果我们仔细想想,这条规则在这种情况下并没有多大意义。首先,您有一个嵌套的复杂泛型返回类型,它可能没有类似参数那么糟糕。其次,我不认为该规则是为异步方法设计的。
我建议在显示此返回类型的方法上禁止它。不要滥用它,因此请确保仅将其放在异步方法上,并且仅在返回类型复杂时才使用:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification="This is an async method.")]
Task<IList<Employee>> LoadAllEmployeeAsync();
【讨论】:
显然这应该由 Microsoft 解决:在 TaskValueTuple
也会弹出此问题。例如,我认为不应针对 Task<(Int32 totalCount, List<Entity> pagedResults)>
的返回类型引发该消息。
2021 年仍然是一个问题...请注意,它只影响公共方法。如果可能,更改为内部也可以解决此问题。以上是关于Visual Studio 代码分析错误 CA 1006的主要内容,如果未能解决你的问题,请参考以下文章
名为 MultiString 的类的 Visual Studio 2010 代码分析警告 CA1704
使用 FluentAssertion 时 Visual Studio 警告 CA1806 的错误识别(不要忽略方法结果)
Visual Studio 2015:C++ 代码分析错误 C1253,无法加载模型文件“res://mspft140.dll/300”