私のVS2008SP1、.NET 3.5 SP1プロジェクトには、さまざまなプロパティを含むさまざまなクラスがあります。私はC#3.0の自動プロパティをよく使用します。
これらのプロパティの一部はコレクションである必要があります。シンプルにしたいので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」を読み取り専用に変更します。C:\ Users ... \ Visual Studio 2008 \ Projects \ CA2227 \ MyClass.cs 7 CA2227