【发布时间】:2011-09-21 13:45:08
【问题描述】:
如果我有
public class MyClass
{
public Func<IModel> InputFunc { get; set; }
}
并尝试去做
public void SetInput<TInput>(Func<TInput> funcInput) where TInput:IModel
{
...
var c = new MyClass();
c.InputFunc = funcInput;
...
}
我得到一个编译错误
Cannot implicitly convert type 'System.Func<TInput>' to 'System.Func<IModel>'
为什么会这样? 我该如何克服这个问题? (我尝试了 where 子句但没有帮助)
【问题讨论】:
-
这在 .net 4 上的 C#4 中应该没问题。您使用的是哪个版本?
-
嗯它在 C# 4 中由于某种原因无法编译。
-
我在 Visual Studio 2010 Professional 上使用 C#4。
-
@CodeInChaos:我也是这么想的,但是需要对泛型类型参数约束进行调整。