Restsharp: ExecuteAsync ne remplace pas complètement ExecuteTaskAsync

Créé le 29 janv. 2020  ·  6Commentaires  ·  Source: restsharp/RestSharp

Comportement prévisible

Avant 106.10.1, le code suivant renvoie un Task<IRestResponse>

Client.ExecuteTaskAsync(request);

Maintenant que 106.10.1 a marqué ExecuteTaskAsync comme obsolète, le code suivant devrait également renvoyer Task<IRestResponse>

Client.ExecuteAsync(request);

Comportement réel

Au lieu de cela, le code suivant produit une erreur de compilation :

Client.ExecuteAsync(request);

Erreur CS0411 Les arguments de type pour la méthode ' IRestClient.ExecuteAsync<T>(IRestRequest, CancellationToken) ' ne peuvent pas être déduits de l'utilisation. Essayez de spécifier explicitement les arguments de type.

J'ai trouvé que le code suivant compile et renvoie Task<IRestResponse>

Client.ExecuteAsync(request, request.Method);

Étapes pour reproduire le problème

  1. Ecrivez le code comme ci-dessus, voir erreur de compilation.

Caractéristiques

  • Version : 106.10.1
  • Plateforme : ASP.Net Core 3.1
bug

Commentaire le plus utile

J'ai trouvé le problème. La surcharge non générique ExecuteAsync qui renvoie IRestRequest ne fait pas partie de l'interface, mais elle est disponible sur le RestClient . Je l'ai déjà corrigé localement.

Tous les 6 commentaires

Pas plus tard qu'hier, j'ai modifié tous les tests pour utiliser ExecuteAsync là où ExecuteTaskAsync était précédemment utilisé. Il n'y a eu aucun problème avec la compilation du code.

Pouvez-vous fournir plus de code ?

Peut confirmer. Il y avait une définition d'interface
IRestClient.ExecuteTaskAsync(IRestRequest) , mais dans la v106.10.1, cela est marqué comme obsolète par IRestClient.ExecuteAsync .

Cependant, il n'y a pas de remplacement direct pour la méthode d'interface IRestClient.ExecuteTaskAsync(IRestRequest) . Le plus proche est IRestClient.ExecuteTaskAsync(IRestRequest, Method) comme mentionné strictement, où vous devez également spécifier la méthode HTTP.

Ce n'est pas un gros problème, mais si la méthode fait déjà partie de la requête, il est sûrement logique d'avoir une définition d'interface qui la lit à partir de la requête ? D'autant plus qu'il a été défini ainsi dans la méthode désormais obsolète 😃

J'ai trouvé le problème. La surcharge non générique ExecuteAsync qui renvoie IRestRequest ne fait pas partie de l'interface, mais elle est disponible sur le RestClient . Je l'ai déjà corrigé localement.

Une estimation pour la prochaine sortie ?

Fermeture à cause de la dernière version.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

maximuss picture maximuss  ·  3Commentaires

wojciechrak picture wojciechrak  ·  3Commentaires

AlexanderSchoenfeld picture AlexanderSchoenfeld  ·  3Commentaires

mwinder picture mwinder  ·  7Commentaires

weswitt picture weswitt  ·  3Commentaires