在我的VS2008 SP1,.NET 3.5 SP1项目中,我有不同的类包含不同的属性。 我使用C#3.0自动属性很多。FxCop CA2227警告和ReadOnlyCollection <T>
其中一些属性需要是集合。由于我想简化它,因此我使用ReadOnlyCollection<T>
来表示这些属性。
我不想使用IEnumerable<T>
,因为我想随机访问元素。
我使用代码分析(FxCop规则),我得到CA2227警告。
我不明白为什么ReadOnlyCollection<T>
应该有一个set方法,但它不能改变...... set方法只能做属性可以做的事情。
实施例:
using System.Collections.ObjectModel;
namespace CA2227
{
public class MyClass
{
public ReadOnlyCollection<int> SomeNumbers { get; set; }
}
}
CA2227:Microsoft.Usage:更改 'MyClass.SomeNumbers' 到只读通过去除属性setter。 C:\ Users ... \ Visual Studio 2008 \ Projects \ CA2227 \ MyClass.cs 7 CA2227
我想能够更改属性的值。 我不想得到CA2227警告。 我也想理解为什么我要得到CA2227警告以及是否应该以不同方式编写代码。 – brickner 2010-04-30 08:22:52
那么,在一天结束时,这是一个警告,你正在做什么是不寻常的,可能是不正确的。如果你确信你是对的 - 看我的编辑... – 2010-04-30 14:56:24
我不相信。 我想知道为什么我得到这样的警告的ReadOnlyCollection而不是IEnumerable的。 –
brickner
2010-04-30 15:28:13