В моем проекте VS2008 SP1, .NET 3.5 SP1 у меня есть разные классы, которые содержат разные свойства. Я много использую свойства C# 3.0.Предупреждение FxCop CA2227 и ReadOnlyCollection <T>
Некоторые из этих свойств должны быть коллекциями. Поскольку я хочу сделать это простым, я использую ReadOnlyCollection<T>
для этих свойств.
Я не хочу использовать IEnumerable<T>
, так как я хочу случайный доступ к элементам.
Я использую Code Analysis (правила FxCop), и я получаю предупреждение CA2227.
Я не понимаю, почему ReadOnlyCollection<T>
должен иметь метод набора, в то время как он не может быть изменен ... Метод 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
Я хочу, чтобы иметь возможность изменить значение свойства. Я не хочу получать предупреждение CA2227. Я также хочу понять, почему я получаю предупреждение CA2227 и должен ли я писать код по-другому. – brickner
Ну, в конце концов, это предупреждение о том, что то, что вы делаете, необычно и может быть неправильным. Если вы уверены, что правы - см. Мое редактирование ... –
Я не уверен. Я хочу понять, почему я получаю это предупреждение для ReadOnlyCollection, а не для IEnumerable . –
brickner