请使用以下代码:
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!");
}
}
使用针对.NET 4.5.1的C#5编译器编译(使用较旧的编译器/框架版本的行为可能相同),这会生成以下错误:
现在,我有一个很好的主意 正在幕后发生的事情(我在博客上发表了here)但我无法提出令人满意的答案为什么