Visual Studio代码分析错误CA 1006

Sur*_*mar 11 c# code-analysis fxcop visual-studio static-code-analysis

代码分析抛出错误CA1006:每当我们在接口契约中定义自定义定义时,不要将泛型类型嵌套在成员签名中.处理这个所谓的设计问题的最佳方法是什么.对此有任何深刻的想法.

感谢您花费宝贵的时间来完成这项工作.

例:-

 Task<IList<Employee>> LoadAllEmployeeAsync();
Run Code Online (Sandbox Code Playgroud)

Mar*_* N. 12

CA1006:不要在成员签名中嵌套泛型类型

我认为规则很清楚.然而,其背后的原因是,任何使用您的类的人都必须经历一个复杂的过程来实例化复杂的参数并降低新库的采用率.

但是,如果我们考虑一下,在这种情况下,该规则没有多大意义.首先,您有一个嵌套的复杂泛型返回类型,它可能没有类似参数那么糟糕.其次,我不认为该规则是异步方法的设计.

我建议在展示此返回类型的方法上禁止它.不要滥用它,因此请确保仅将其放在异步方法上,并且仅在返回类型很复杂时:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification="This is an async method.")]
Task<IList<Employee>> LoadAllEmployeeAsync();
Run Code Online (Sandbox Code Playgroud)

  • 显然,这应由Microsoft修复:在Task <TResult>的情况下,此规则应忽略一个嵌套级别的泛型参数. (11认同)