title: C# dynamic fails invoking method from a base interface
body: <p>Take the following code:</p>
  
  <pre><code>ICanQuack quack = new Duck();
  var map = (object) "a map";
  quack.Fly((dynamic)map);
  </code></pre>
  
  <p>using those types</p>
  
  <pre><code>public interface ICanFly
  {
      void Fly&lt;T&gt;(T map);
  }
  
  public interface ICanQuack : ICanFly
  {
      void Quack();
  }
  
  public class Duck : ICanQuack
  {
      public void Fly&lt;T&gt;(T map)
      {
          Console.WriteLine("Flying using a {0} map ({1})", typeof (T).Name, map);
      }
  
      public void Quack()
      {
          Console.WriteLine("Quack Quack!");
      }
  }
  </code></pre>
  
  <p>Compiled with C# 5 compiler against .NET 4.5.1 (the behaviour is probably the same using older compiler/framework version) this generates the following error:
  <img src="https://i.stack.imgur.com/6FF60.jpg" alt="enter image description here"></p>
  
  <p>Now, I have a pretty good idea <strong>what</strong> is happening under the covers (I blogged about it <a href="http://kozmic.net/2013/11/27/on-c-dynamic-and-calling-base-types-methods/" rel="noreferrer">here</a>) but I can't come up with a satisfying answer <strong>why</strong>?</p>