Нет подходящего метода для замены в C# - PullRequest
0 голосов
/ 16 июня 2020

В моем коде есть следующий метод, который принимает 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 ]

3 голосов
/ 16 июня 2020

Другой метод, который вам нужен, не override, override означает, что вы переопределяете метод virtual в базовом классе. И у вас нет базового класса.

Удалите ключевое слово override в своей функции, и она будет работать так, как вы хотите.

0 голосов
/ 16 июня 2020

Ошибка верная. Чтобы переопределить существующий метод, он должен иметь ту же сигнатуру, что и переопределяемый метод. Поскольку ваш метод принимает строку, он не может переопределить метод, который принимает Guid. Вместо этого я думаю, вы хотите перегрузить метод ( Перегрузка и переопределение .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...