FxCopwarningCA1006请问有什么好的解决办法吗?我遇到FxCop警告CA1006,Microsoft.Design“DoNotNestGenericTypesInMemberSignatures”的问题。具体来说,我正在设计一个ReportCollection类,它继承自ReadOnlyCollection并且其公共构造函数采用IList作为参数。修复此警告的建议不是很有帮助:“要修复违反此规则的问题,请更改设计以删除嵌套类型参数。”到目前为止,我可以通过两种方式更改设计:将构造函数设为内部。这在我的情况下不起作用。构造函数必须是公共的,因为这个集合类需要在程序集外部由代码实例化。使构造函数采用Report[]而不是IList。这是次优的,因为外部代码应该可以灵活地使用动态大小的数据结构,例如List而不是固定大小的数组。在这一点上,我放弃并压制了警告。有更好的解决方案吗?我同意,另一个忽略这条规则的好时机是当你需要说:Func>当然你可以使用非泛型IEnumerable,但你可以使用任何类型,只要它实现了IEnumerable(非泛型)。泛型(部分)的目的是限制可以为给定类型集授予的类型。我认为这个规则非常愚蠢。仅当您有多个嵌套的泛型类型时才需要这样做。一层嵌套不仅安全。顺便说一句,我认为很多LINQ函数也嵌套泛型类型,所以如果MS这样做,我们也可以:)我会接受FxCop的警告,就好像它们是非常保守的同事的建议一样。忽略(抑制)它建议的某些内容完全没问题。我同意你可以忽略CA1006警告Func>你也可以使用委托来简化你的代码并避免CA1006:以上是C#学习教程:FxCop警告CA1006有什么好的解决方案吗?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——publicdelegateIEnumerableChildrenDel(Tparent);//是:GetDescendants(这个T项,Func>children)publicstaticIEnumerableGetDescendants(这个T项,ChildrenDelchildren){varstack=newStack();做{孩子(项目)。ForEach(堆栈。推送);如果(堆栈。计数==0)中断;item=stack.Pop();收益率退货项目;}while(真);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: