Restsharp: ExecuteAsync не полностью заменяет ExecuteTaskAsync

Созданный на 29 янв. 2020  ·  6Комментарии  ·  Источник: restsharp/RestSharp

Ожидаемое поведение

До 106.10.1 следующий код возвращает Task<IRestResponse>

Client.ExecuteTaskAsync(request);

Теперь, когда 106.10.1 пометил ExecuteTaskAsync как устаревший, ожидается, что следующий код также вернет Task<IRestResponse>

Client.ExecuteAsync(request);

Фактическое поведение

Вместо этого следующий код вызывает ошибку компиляции:

Client.ExecuteAsync(request);

Ошибка CS0411 Аргументы типа для метода « IRestClient.ExecuteAsync<T>(IRestRequest, CancellationToken) » не могут быть выведены из использования. Попробуйте явно указать аргументы типа.

Я обнаружил, что следующий код компилируется и возвращает Task<IRestResponse>

Client.ExecuteAsync(request, request.Method);

Шаги по воспроизведению проблемы

  1. Напишите код, как указано выше, см. Ошибку компиляции.

Характеристики

  • Версия: 106.10.1
  • Платформа: ASP.Net Core 3.1

Самый полезный комментарий

Я нашел проблему. Неуниверсальная перегрузка ExecuteAsync которая возвращает IRestRequest , не является частью интерфейса, но доступна в RestClient . Я уже исправил это локально.

Все 6 Комментарий

Буквально вчера я изменил все тесты, чтобы использовать ExecuteAsync, где ранее использовался ExecuteTaskAsync. С компиляцией кода проблем не возникло.

Можете ли вы предоставить больше кода?

Могу подтвердить. Раньше было определение интерфейса
IRestClient.ExecuteTaskAsync(IRestRequest) , но в v106.10.1 это помечено как устаревшее с помощью IRestClient.ExecuteAsync .

Однако прямой замены интерфейсному методу IRestClient.ExecuteTaskAsync(IRestRequest) . Ближайший из них - IRestClient.ExecuteTaskAsync(IRestRequest, Method) как упоминается в строгом смысле, где вы также должны указать метод HTTP.

Это не имеет большого значения, но если метод уже является частью запроса, то, конечно, имеет смысл иметь определение интерфейса, которое считывает его из запроса? Тем более, что это было определено таким образом в устаревшем методе 😃

Я нашел проблему. Неуниверсальная перегрузка ExecuteAsync которая возвращает IRestRequest , не является частью интерфейса, но доступна в RestClient . Я уже исправил это локально.

Есть какие-нибудь предположения о времени следующего релиза?

Закрытие из-за последней версии.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги