提问者:小点点

没有适合在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还比较陌生,如果有任何建议,我将不胜感激--我确信我遗漏了一些显而易见的东西? 谢谢


共2个答案

匿名用户

您需要的另一个方法不是覆盖覆盖意味着您要覆盖基类中的虚拟方法。 并且没有基类。

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

匿名用户

错误是正确的。 为了重写现有方法,它必须与重写的方法具有完全相同的签名。 因为您的方法接受字符串,所以它不能覆盖接受GUID的方法。 相反,我认为您希望重载该方法(重载和重写)