public void Foo<T>(Func<T> bar)
where T: IMyInterface
{
Func<IMyInterface> func = bar;
}
我已经有一段时间了解协方差,但这不应该编译吗?
bar
可以返回的任何内容也是IMyInterface
。什么似乎是问题?
答案 0 :(得分:7)
Is this a covariance bug in C# 4?
正确的代码是:
public void Foo<T>(Func<T> bar)
where T: class, IMyInterface
{
Func<IMyInterface> func = bar;
}