title: IEnumerable<T>.Cast won't work even if an explicit cast operator is defined?
body: <p>I have an explicit conversion defined from type <code>Bar</code> to type <code>Foo</code>.</p>
  
  <pre><code>public class Bar
  {
    public static explicit operator Foo(Bar bar)
    {
      return new Foo(bar.Gar);
    }
  }
  
  public class Foo
  {
    public string Gar { get; set; }
  
    public Foo() { }
  
    public Foo(string gar) { Gar = gar; }
  }
  </code></pre>
  
  <p>However, when I do:</p>
  
  <pre><code>using System.Linq;
  
  ...
  
  var manyFoos = manyBars.Cast&lt;Foo&gt;();
  </code></pre>
  
  <p>It throws an exception saying it can't cast.</p>
  
  <p>How do I tell <code>Cast</code> to use my cast operator to try the conversion?</p>