title: FxCop: CA1033 - Microsoft's implementation of a ReadOnlyCollection violates this?
body: <p>If you look at the code for a read-only collection it does not have an "Add" method, but instead defines the <code>ICollection&lt;T&gt;.Add(T Value)</code> method (explicit interface implementation).</p>
  
  <p>When I did something similar with my ReadOnlyDictionary class, FxCop 10 complains that I'm breaking <a href="http://msdn.microsoft.com/en-us/library/ms182153.aspx" rel="noreferrer">CA1033</a>.</p>
  
  <pre><code>public class ReadOnlyDictionary&lt;TKey, TValue&gt; : IDictionary&lt;TKey, TValue&gt;
  {
      //CA1033 ERROR
      void IDictionary&lt;TKey, TValue&gt;.Add(TKey, TValue) { //Throw Exception }
  }
  
  public class ReadOnlyDictionary&lt;TKey, TValue&gt; : IDictionary&lt;TKey, TValue&gt;
  {
      //NO CA1033 ERROR
      Add(TKey, TValue) { //Throw Exception }
  }
  </code></pre>
  
  <p>ReadOnlyCollectionClass:</p>
  
  <pre><code>public class ReadOnlyCollection&lt;T&gt; : ICollection&lt;T&gt;
  {
      void ICollection&lt;T&gt;.Add(T item) { //Throw Exception }
  }
  </code></pre>
  
  <p>So, is this a false positive? Is Microsoft's base code bad? What gives?</p>