コンパイラ エラーが発生し、コンパイラが私がやろうとしていることを理解できない理由を理解するのに苦労しています。:)
抽象基本クラスから始まります。
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());
}
}
Task<MyObject>
制約を尊重する を返すので、これは有効に見えます。
しかし、コンパイラは DoSomething の実装について不平を言っています。
System.Threading.Tasks.Task<MyObject>
タイプ ' ' を ' ' にSystem.Threading.Tasks.Task<T>
暗黙的に変換することはできません
派生クラスで制約を強化することができないので、これをどのように整理するか非常に疑問です!