Как вернуть значение при использовании метода asyn c для возврата значения. Я получаю ошибку - PullRequest
0 голосов
/ 21 января 2020

Ошибка, которую я получаю, находится в последней строке оператора return.

"Невозможно неявно преобразовать тип 'System.Threading.Tasks.Task' в RestSharp.IRestResponse '. Явное преобразование завершается (вам не хватает актерского состава?) "

public static async Task<IRestResponse<T>> ExecuteAsyncRequest<T>(this RestClient client, IRestRequest request) where T : class, new() //Since we used the T. We need to specify wether T is of type class or new type
     {

         var taskCompletionSource = new TaskCompletionSource<IRestResponse>();


         client.ExecuteAsync<T>(request, restResponse =>
         {
             //Verbose message of the error
             if (restResponse.ErrorException != null)
             {

                 const string message = "Error retrieving response.";
                 throw new ApplicationException(message, restResponse.ErrorException);

             }

             //Setting the result of the execution
             taskCompletionSource.SetResult(restResponse);

         });

         //return us the reuslt
         return await taskCompletionSource.Task; 

1 Ответ

1 голос
/ 21 января 2020

Я не могу полностью воспроизвести это: я получаю немного другую ошибку

Не могу неявно преобразовать тип 'RestSharp.IRestResponse' в 'RestSharp.IRestResponse'. Явное преобразование завершается (вам не хватает приведения?)

Ссылка

Это потому, что ваш метод возвращает IRestResponse<T>, а ваш TaskCompletionSource содержит только IRestResponse. Вы можете исправить ошибку, изменив ее на TaskCompletionSource<IRestResponse<T>>.

var taskCompletionSource = new TaskCompletionSource<IRestResponse<T>>();
...