I have class in C# with virtual method, for example:
public class Car
{
public virtual CarModel Run()
{
return new CarModel();
}
}
And second class that inherits from 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");
}
}
Now I get error: Return type must be CarModel to match overridden member Car.Run()
When I remove await, async
and Task
from Run
from CarFiat
class it works, but I can't call async method inside it:
//public async override Task<CarModel> Run()
public override CarModel Run()
{
var carModel = base.Run();
//await MeasureSpeed();
return carModel;
}
CodePudding user response:
You will have to modify your base class to return Task<CarModel>
. You can then use Task.FromResult
to return synchronously in your base.
public class Car
{
public virtual Task<CarModel> Run()
{
return Task.FromResult(new CarModel());
}
}
If the above is not possible you can do sync over async, but its NOT recommend https://stackoverflow.com/a/9343733/1020941