每当我们在接口契约中定义自定义定义时,代码分析都会抛出错误CA1006: Do not nest generic types in member signatures。处理这个所谓的设计问题的最佳方法是什么。对此有任何深刻的想法。
感谢您花费宝贵的时间来完成这项工作。
实施例: -
Task<IList<Employee>> LoadAllEmployeeAsync();
答案 0 :(得分:12)
CA1006: Do not nest generic types in member signatures
我认为规则很清楚。然而,其背后的原因是,任何使用您的类的人都必须经历一个复杂的过程来实例化复杂的参数并降低新库的采用率。
但是,如果我们考虑一下,那么这个规则在这方面没有多大意义。首先,您有一个嵌套的复杂泛型返回类型,它可能没有类似参数那么糟糕。其次,我不认为该规则是异步方法的设计。
我建议在展示此返回类型的方法上禁止它。不要滥用它,因此请确保仅将其放在异步方法上,并且仅在返回类型很复杂时才使用它:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification="This is an async method.")]
Task<IList<Employee>> LoadAllEmployeeAsync();