C#dynamic无法从基接口调用方法

Krz*_*mic 31 c# dynamic

请使用以下代码:

ICanQuack quack = new Duck();
var map = (object) "a map";
quack.Fly((dynamic)map);
Run Code Online (Sandbox Code Playgroud)

使用这些类型

public interface ICanFly
{
    void Fly<T>(T map);
}

public interface ICanQuack : ICanFly
{
    void Quack();
}

public class Duck : ICanQuack
{
    public void Fly<T>(T map)
    {
        Console.WriteLine("Flying using a {0} map ({1})", typeof (T).Name, map);
    }

    public void Quack()
    {
        Console.WriteLine("Quack Quack!");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用针对.NET 4.5.1的C#5编译器编译(使用较旧的编译器/框架版本的行为可能相同),这会生成以下错误: 在此输入图像描述

现在,我非常清楚在幕后发生了什么(我在这里写了博客)但我无法想出一个令人满意的答案为什么

Roh*_*hit 13

我猜这种情况已经向微软汇报了.

看看这里