为什么ReadOnlyCollection <readonlycollection <t>&gt;根据FxCop不好,在生成不可变的二维对象时有什么选择?

时间:2016-06-03 15:25:37

标签: c# .net immutability fxcop readonly-collection

我正在修改我的所有代码以符合FxCop,这意味着放弃了很多数组,列表支持ReadOnlyCollection,我同意这个建议。但是,在制作

ReadOnlyCollection<ReadOnlyCollection<T>> 

替换二维数组或

List<List<T>> I now get the 

CA1006: Do not nest generic types in member signatures

投诉。首先,虽然它看起来不实用,但它看起来并不复杂或难以理解,因为它本质上是一个不可变的List<List<T>>,我认为鉴于数组的缺点,它是非常常见的。 其次,我想不出存储二维数据的替代方法,并且是不可变的,除非我特别为此创建一个新类型。

请在这里找到最佳做法。难道这个FxCop规则在这里并不适用,应该被抑制吗?

非常感谢。

1 个答案:

答案 0 :(得分:-1)

这篇文章的评论似乎也适用于此:

  

警告是一般警告,可以帮助您设计更好的警告   和更简单的公共接口。在这种情况下,您会收到警告   具有表达式&gt;你的参数   方法。但是,对于这种方法,没有必要简化   键入,而不是您应该使用属性或抑制警告   从规则集中完全删除规则。

     

一个愚蠢的例子,你可能应该考虑遵循   规则的建议是这样的方法:

     

public void F(Dictionary<String, List<Tuple<<String, Int32>>>   字典);

Martin Liversage的回答@ https://stackoverflow.com/a/14945331/1775528