没有合适的方法可以在C#中覆盖

时间:2020-06-16 14:06:10

标签: c# .net

我的代码中包含以下方法,该方法将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还是比较陌生的,任何建议都将不胜感激-我确定自己缺少明显的东西吗?谢谢

2 个答案:

答案 0 :(得分:3)

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

删除函数中的override关键字,它将根据需要运行。

答案 1 :(得分:0)

错误是正确的。为了覆盖现有方法,它必须具有与要覆盖的方法完全相同的签名。由于您的方法采用字符串,因此无法覆盖采用Guid的方法。相反,我认为您想重载方法(Overloading and overriding。)