30
採取下面的代碼調用方法:在使用這些類型C#動態失敗從基站接口
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!");
}
}
與C#5針對.NET 4.5.1編譯器編譯
ICanQuack quack = new Duck();
var map = (object) "a map";
quack.Fly((dynamic)map);
(行爲可能是相同的使用較舊的編譯器/框架版本)這會產生以下錯誤:
現在,我有一個不錯的想法什麼在幕後(我的博客上講述它here),但我不能拿出一個令人滿意的答案爲什麼下發生?
我懷疑答案可能是「錯誤」 :)不過我會看在後面詳細。 –
有趣的問題!我猜'dynamic'不能用作泛型的類型參數,因爲它不是實際的類型。 – Carsten
@Aschratt這是一個嵌套的接口問題。看看他的博客。 – gleng