title: Best way of using List<T> and exposing Collection<T>
body: <p>I must implement a web service which expose a list of values (integers, custom classes etc).
  My working solution returns a <code>List&lt;T&gt;</code>, and according to FxCop it is better to return a <code>Collection&lt;T&gt;</code> or <code>ReadOnlyCollection&lt;T&gt;</code>.</p>
  
  <p>If I choose to return a <code>ReadOnlyCollection&lt;T&gt;</code>, the web service shows an error like:</p>
  
  <blockquote>
    <p>To be XML serializable, types which inherit from <code>ICollection</code> must have an implementation of <code>Add(System.Int32)</code> at all levels of their inheritance hierarchy.
    <code>System.Collections.ObjectModel.ReadOnlyCollection</code> <code>1</code> <code>[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</code> does not implement <code>Add(System.Int32)</code>.</p>
  </blockquote>
  
  <p>What is your favorite way to use internally a <code>List&lt;T&gt;</code> and expose a <code>Collection&lt;T&gt;</code> ? (using C#, and preferably framework 2.0 only)</p>