我面临编译器错误,我很难弄清楚为什么编译器无法理解我正在尝试做什么!:)
它从一个抽象基类开始:
abstract class Base
{
protected abstract Task<T> DoSomething<T>() where T : MyObject;
}
请注意,我正在为 指定一个约束T
,它应该是类型MyObject
。
现在我尝试从Base
这种方式得出:
class Derived : Base
{
protected override Task<T> DoSomething<T>()
{
return Task.FromResult<MyObject>(new MyObject());
}
}
这对我来说看起来是有效的,因为我正在返回 a Task<MyObject>
,它尊重约束。
但是编译器抱怨 DoSomething 的实现,说
无法将类型“
System.Threading.Tasks.Task<MyObject>
”隐式转换为“System.Threading.Tasks.Task<T>
”
我无法加强派生类中的约束,所以我真的想知道如何解决这个问题!