Подтвердить что ты не робот

С# динамический сбой вызова метода из базового интерфейса

Возьмите следующий код:

ICanQuack quack = new Duck();
var map = (object) "a map";
quack.Fly((dynamic)map);

с использованием этих типов

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!");
    }
}

Скомпилирован с компилятором С# 5 против .NET 4.5.1 (поведение, вероятно, одинаково с использованием более старой версии компилятора/фреймворка), это приводит к следующей ошибке: enter image description here

Теперь у меня есть довольно хорошая идея , что происходит под обложками (я писал об этом здесь) но я не могу придумать удовлетворительный ответ почему?

4b9b3361

Ответ 1

Я предполагаю, что эта ситуация уже появилась в Microsoft.

Посмотрите здесь