Restsharp: ExecuteAsync ersetzt ExecuteTaskAsync nicht vollständig

Erstellt am 29. Jan. 2020  ·  6Kommentare  ·  Quelle: restsharp/RestSharp

Erwartetes Verhalten

Vor 106.10.1 gibt der folgende Code ein Task<IRestResponse>

Client.ExecuteTaskAsync(request);

Nachdem 106.10.1 ExecuteTaskAsync als veraltet markiert hat, wird erwartet, dass der folgende Code auch Task<IRestResponse> zurückgibt

Client.ExecuteAsync(request);

Tatsächliches Verhalten

Stattdessen erzeugt der folgende Code einen Kompilierungsfehler:

Client.ExecuteAsync(request);

Fehler CS0411 Die Typargumente für Methode ' IRestClient.ExecuteAsync<T>(IRestRequest, CancellationToken) ' können nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.

Ich habe festgestellt, dass der folgende Code kompiliert wird und Task<IRestResponse> zurückgibt

Client.ExecuteAsync(request, request.Method);

Schritte zum Reproduzieren des Problems

  1. Code wie oben schreiben, siehe Kompilierungsfehler.

Spezifikationen

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

Hilfreichster Kommentar

Ich habe das Problem gefunden. Die nicht generische Überladung ExecuteAsync , die IRestRequest zurückgibt, ist kein Teil der Schnittstelle, aber sie ist auf RestClient verfügbar. Ich habe es bereits lokal behoben.

Alle 6 Kommentare

Erst gestern habe ich alle Tests geändert, um ExecuteAsync zu verwenden, wo zuvor ExecuteTaskAsync verwendet wurde. Beim Kompilieren des Codes gab es keine Probleme.

Können Sie mehr Code bereitstellen?

Kann bestätigen. Früher gab es eine Schnittstellendefinition
IRestClient.ExecuteTaskAsync(IRestRequest) , aber in v106.10.1 wird dies durch IRestClient.ExecuteAsync als veraltet markiert.

Es gibt jedoch keinen direkten Ersatz für die Schnittstellenmethode IRestClient.ExecuteTaskAsync(IRestRequest) . Der nächste ist IRestClient.ExecuteTaskAsync(IRestRequest, Method) wie stricq erwähnt, wo Sie auch die HTTP-Methode angeben müssen.

Das ist keine große Sache, aber wenn die Methode bereits Teil der Anfrage ist, ist es sicher sinnvoll, eine Schnittstellendefinition zu haben, die sie aus der Anfrage liest? Zumal es in der mittlerweile veralteten Methode so definiert wurde 😃

Ich habe das Problem gefunden. Die nicht generische Überladung ExecuteAsync , die IRestRequest zurückgibt, ist kein Teil der Schnittstelle, aber sie ist auf RestClient verfügbar. Ich habe es bereits lokal behoben.

Irgendeine Schätzung für den nächsten Release-Zeitpunkt?

Schließung wegen der neuesten Version.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen