Restsharp: ExecuteAsync não substitui totalmente ExecuteTaskAsync

Criado em 29 jan. 2020  ·  6Comentários  ·  Fonte: restsharp/RestSharp

Comportamento esperado

Antes de 106.10.1, o código a seguir retorna um Task<IRestResponse>

Client.ExecuteTaskAsync(request);

Agora que 106.10.1 marcou ExecuteTaskAsync como obsoleto, espera-se que o código a seguir também retorne Task<IRestResponse>

Client.ExecuteAsync(request);

Comportamento Real

Em vez disso, o código a seguir produz um erro de compilação:

Client.ExecuteAsync(request);

Erro CS0411 Os argumentos de tipo para o método ' IRestClient.ExecuteAsync<T>(IRestRequest, CancellationToken) ' não podem ser inferidos do uso. Tente especificar os argumentos de tipo explicitamente.

Eu descobri que o código a seguir compila e retorna Task<IRestResponse>

Client.ExecuteAsync(request, request.Method);

Etapas para reproduzir o problema

  1. Escreva o código como acima, consulte o erro de compilação.

Especificações

  • Versão: 106.10.1
  • Plataforma: ASP.Net Core 3.1
bug

Comentários muito úteis

Eu encontrei o problema. A sobrecarga não genérica ExecuteAsync que retorna IRestRequest não faz parte da interface, mas está disponível em RestClient . Já consertei localmente.

Todos 6 comentários

Ontem eu mudei todos os testes para usar ExecuteAsync onde ExecuteTaskAsync foi usado anteriormente. Não houve problemas com a compilação do código.

Você pode fornecer mais código?

Pode confirmar. Costumava haver uma definição de interface
IRestClient.ExecuteTaskAsync(IRestRequest) , mas na v106.10.1 isso foi marcado como obsoleto por IRestClient.ExecuteAsync .

No entanto, não há substituição direta para o método de interface IRestClient.ExecuteTaskAsync(IRestRequest) . O mais próximo é IRestClient.ExecuteTaskAsync(IRestRequest, Method) as stricq menciona, onde você também deve especificar o método HTTP.

Isso não é grande coisa, mas se o método já faz parte da solicitação, certamente faz sentido ter uma definição de interface que o leia a partir da solicitação? Especialmente porque foi definido dessa forma no método agora obsoleto 😃

Eu encontrei o problema. A sobrecarga não genérica ExecuteAsync que retorna IRestRequest não faz parte da interface, mas está disponível em RestClient . Já consertei localmente.

Alguma estimativa para o próximo lançamento?

Fechando por causa do último lançamento.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

wojciechrak picture wojciechrak  ·  3Comentários

nilesh-shah picture nilesh-shah  ·  6Comentários

captnrob picture captnrob  ·  3Comentários

mwinder picture mwinder  ·  7Comentários

instriker picture instriker  ·  7Comentários