gpt4 book ai didi

c# - 我应该如何在 Windows Phone 7 上使用 RestSharp 实现 ExecuteAsync?

转载 作者:IT王子 更新时间:2023-10-29 04:15:06 27 4
gpt4 key购买 nike

我正在尝试使用 RestSharp GitHub wiki 上的文档实现对我的 REST API 服务的调用,但我特别遇到 ExecuteAsync 方法的问题。

目前,我的 API 类代码如下所示:

public class HarooApi
{
const string BaseUrl = "https://domain.here";

readonly string _accountSid;
readonly string _secretKey;

public HarooApi(string accountSid, string secretKey)
{
_accountSid = accountSid;
_secretKey = secretKey;
}

public T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient();
client.BaseUrl = BaseUrl;
client.Authenticator = new HttpBasicAuthenticator(_accountSid, _secretKey);
request.AddParameter("AccountSid", _accountSid, ParameterType.UrlSegment);
client.ExecuteAsync<T>(request, (response) =>
{
return response.Data;
});
}
}

我知道这与 GitHub 页面上的内容略有不同,但我将其与 WP7 一起使用,并且相信该示例适用于 C#,因此使用了 ExecuteAsync 方法。

我的问题是 ExecuteAsync 命令应该包含什么。我不能使用 return response.Data 因为我被警告:

'System.Action<RestSharp.RestResponse<T>,RestSharp.RestRequestAsyncHandle>' returns void, a return keyword must not be followed by an object expression

有没有人知道如何解决这个问题或有帮助的教程?

最佳答案

老问题,但如果您使用的是 C# 5,则可以通过创建一个返回 T 任务的 TaskCompleteSource 来拥有一个通用的执行类。您的代码可能如下所示:

public Task<T> ExecuteAsync<T>(RestRequest request) where T : new()
{
var client = new RestClient();
var taskCompletionSource = new TaskCompletionSource<T>();
client.BaseUrl = BaseUrl;
client.Authenticator = new HttpBasicAuthenticator(_accountSid, _secretKey);
request.AddParameter("AccountSid", _accountSid, ParameterType.UrlSegment);
client.ExecuteAsync<T>(request, (response) => taskCompletionSource.SetResult(response.Data));
return taskCompletionSource.Task;
}

然后像这样使用它:

private async Task DoWork()
{
var api = new HarooApi("MyAcoountId", "MySecret");
var request = new RestRequest();
var myClass = await api.ExecuteAsync<MyClass>(request);

// Do something with myClass
}

关于c# - 我应该如何在 Windows Phone 7 上使用 RestSharp 实现 ExecuteAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com