我的代码中包含以下方法,该方法将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还是比较陌生的,任何建议都将不胜感激-我确定自己缺少明显的东西吗?谢谢
答案 0 :(得分:3)
您想要的另一个方法不是override
,override
意味着您要在基类中覆盖virtual
方法。而且您没有基类。
删除函数中的override
关键字,它将根据需要运行。
答案 1 :(得分:0)
错误是正确的。为了覆盖现有方法,它必须具有与要覆盖的方法完全相同的签名。由于您的方法采用字符串,因此无法覆盖采用Guid的方法。相反,我认为您想重载方法(Overloading and overriding。)