[英]Αsync for overridden method when virtual method isn't async
我用虛方法在 C# 中有 class,例如:
public class Car
{
public virtual CarModel Run()
{
return new CarModel();
}
}
第二個 class 繼承自Car
class:
public class CarFiat : Car
{
public async override Task<CarModel> Run()
{
var carModel = base.Run();
await MeasureSpeed();
return carModel;
}
private async Task<string> MeasureSpeed()
{
return await Task.FromResult("50");
}
}
現在我得到錯誤: Return type must be CarModel to match overridden member Car.Run()
當我從CarFiat
class 的Run
中刪除await, async
和Task
時,它可以工作,但我無法在其中調用異步方法:
//public async override Task<CarModel> Run()
public override CarModel Run()
{
var carModel = base.Run();
//await MeasureSpeed();
return carModel;
}
您將必須修改您的基礎 class 以返回Task<CarModel>
。 然后,您可以使用Task.FromResult
在您的基礎中同步返回。
public class Car
{
public virtual Task<CarModel> Run()
{
return Task.FromResult(new CarModel());
}
}
如果以上不可能,您可以通過異步進行同步,但不推薦https://stackoverflow.com/a/9343733/1020941
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.