title: Resharper suggests parameter can be of type 'BaseType'
body: <p>what are the benefits of using base types in method parameters?</p>
  
  <p>Here's one sample:</p>
  
  <pre><code>
  private void Foo(List&lt;int&gt; numbers) //R# laments: parameter can be IEnumerable. 
  {
      foreach (var i in numbers) {
          Console.WriteLine(i);
      }
  }
  </code></pre>
  
  <p><br/><br/>
  And here's <a href="http://www.jetbrains.net/jira/browse/RSRP-42842" rel="noreferrer" title="another example">another one</a></p>
  
  <pre><code>
  public class Foo : ICloneable
  {
      public object Clone()
      {
          return MemberwiseClone();
      }
  
      public Foo CopyMe(Foo other) //R# laments: parameter can be ICloneable
      { 
          return (Foo)other.Clone();
      }
  }
  </code></pre>
  
  <p>...where we <i>can</i> change the type and anything but Foo will fail at runtime.</p>
  
  <p><br/><br/>
  <b>So the question: what should I do when R# suggests <i>parameter can be of type 'X'</i>?</b>
  <br/><br/><br/><br/></p>
  
  <hr>
  
  <p>PS. Just another explanation for <a href="http://code.google.com/p/whysharper/" rel="noreferrer">Whysharper - a plugin that dovetails Resharper and StackOverflow</a>. People say it's nice but lacks good explanations - hopefully together we can make it better ;).</p>