c# - 具有异步覆盖的同步基方法
问题描述
我有一个基类,它的子类可能想要异步实现一个方法。我已经实现如下,但是 Visual Studio 建议GetEntityName
在基本同步中进行,因为它没有await
任何作用。然而,这会让孩子们崩溃。
有没有更好的办法?
public abstract class BaseHandler
{
protected virtual async Task<string> GetEntityName(object entity)
{
return string.Empty;
}
}
public class ChilldHandler: BaseHandler
{
protected override async Task<string> GetEntityName(object entity)
{
return await LongRunningService.DoSomething(entity);
}
}
解决方案
public abstract class BaseHandler
{
protected virtual Task<string> GetEntityName(object entity)
{
return Task.FromResult(string.Empty);
}
}
因为你的方法没有做任何可以等待的事情,你可以通过使用Task.FromResult
方法返回已经完成的任务。
你不需要 await 里面的任何东西GetEntityName
,因为没有任何不完整的 Task 需要等待。
推荐阅读
- python - cv2.imshow() 函数在我调用它时不显示任何内容
- python - 每次 Python 都给我 True
- r - 是否有任何 r 代码可以使用带有 ggplot 的 facet wrap 来关闭直方图中的所有间隙?
- django - 生产中的静态文件 404
- android - 如何创建仅包含图标的芯片?
- android - 使用服务帐户从android更新谷歌表?
- excel - Excel ComboBox - 键入的文本在组合框失去焦点之前不显示
- activemq-cpp - activemq-cpp pull consumer 接收远程地址
- html - 如何在移动屏幕上删除引导 jumbotron 的填充?
- c++ - 如何对二维数组的列求和