FxCop CA2227 warning and ReadOnlyCollection<T>

Posted by brickner on Stack Overflow See other posts from Stack Overflow or by brickner
Published on 2010-04-30T08:13:10Z Indexed on 2010/04/30 8:17 UTC
Read the original article Hit count: 1592

In my VS2008 SP1, .NET 3.5 SP1 project, I have different classes that contain different properties. I use C#3.0 auto properties a lot.

Some of these properties need to be collections. Since I want to make it simple, I use ReadOnlyCollection<T> for these properties.

I don't want to use IEnumerable<T> since I want random access to the elements.

I use Code Analysis (FxCop rules) and I get the CA2227 warning.

I don't understand why does ReadOnlyCollection<T> should have a set method while it can't be changed... The set method can only do exactly what the property can do.

Example:

using System.Collections.ObjectModel;

namespace CA2227
{
    public class MyClass
    {
        public ReadOnlyCollection<int> SomeNumbers { get; set; }
    }
}

CA2227 : Microsoft.Usage : Change 'MyClass.SomeNumbers' to be read-only by removing the property setter. C:\Users...\Visual Studio 2008\Projects\CA2227\MyClass.cs 7 CA2227

© Stack Overflow or respective owner

Related posts about fxcop

Related posts about code-analysis