簡體   English   中英

C# 中沒有合適的覆蓋方法

[英]No suitable method to override in 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 比較陌生,任何建議都將不勝感激 - 我確定我遺漏了一些明顯的東西? 謝謝

您想要的另一種方法不是overrideoverride意味着您正在覆蓋基礎 class 中的virtual方法。 而且您沒有基礎 class。

刪除 function 中的override關鍵字,它將按您的意願工作。

錯誤是正確的。 為了覆蓋現有方法,它必須具有與其覆蓋的方法完全相同的簽名。 由於您的方法接受一個字符串,它不能覆蓋一個接受 Guid 的方法。 相反,我認為您想重載該方法( Overloading 和 overriding 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM