首页 > 解决方案 > 具有异步覆盖的同步基方法

问题描述

我有一个基类,它的子类可能想要异步实现一个方法。我已经实现如下,但是 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);
        }
 }

标签: c#visual-studio

解决方案


public abstract class BaseHandler
{
    protected virtual Task<string> GetEntityName(object entity)
    {
        return Task.FromResult(string.Empty);
    }
}

因为你的方法没有做任何可以等待的事情,你可以通过使用Task.FromResult方法返回已经完成的任务。

你不需要 await 里面的任何东西GetEntityName,因为没有任何不完整的 Task 需要等待。


推荐阅读