首页 > 解决方案 > 在 C# 中没有合适的方法来覆盖

问题描述

我的代码中有以下方法,它以 Guid 作为参数。我想用一个将字符串作为参数的方法覆盖这个方法:

public class SendEmailApi: ISendEmailApi
{

     public async Task<EmailTemplate> GetTemplateByIdAsync(Guid templateId)
     {
         var response = await _emailClient.RequestAsync(EmailClient.Method.GET, urlPath: $"templates/{templateId}");

         return JsonConvert.DeserializeObject<EmailTemplate>(await response.Body.ReadAsStringAsync());
     }
}

但是,当我尝试实现时,我得到了没有合适的方法来覆盖的错误。

public async override Task<EmailTemplate> GetTemplateByIdAsync(string templateId)
{
     var response = await _emailClient.RequestAsync(EmailClient.Method.GET, urlPath: $"templates/{templateId}");

     return JsonConvert.DeserializeObject<EmailTemplate>(await response.Body.ReadAsStringAsync());
}      

界面如下所示:

public interface ISendEmailApi
{
    Task<EmailTemplate> GetTemplateByIdAsync(Guid templateId);
}

我对 C# 和 .NET 比较陌生,任何建议都将不胜感激 - 我确定我遗漏了一些明显的东西?谢谢

标签: c#.net

解决方案


您想要的另一个方法不是override,override意味着您正在覆盖virtual基类中的方法。而且你没有基类。

删除override函数中的关键字,它将按您的意愿工作。


推荐阅读