异步方法的返回类型必须为void,C#中的Task或Task <t>

时间:2018-01-12 18:22:38

标签: c#

我有以下方法并收到以下错误。我想知道我怎么能在这个问题上克服。

  

异步方法的返回类型必须为void,Task或Task

private static async T GoRequest<T>(string url, Dictionary<string, object> parameters, HttpMethod method,string body = "")
            where T : class
{
      // the rest of the code I commented.
      // the following is the return
      var jsonResult = content.Replace(@"\", "").Trim('"');
                    return typeof (T) == typeof (string)
                        ? jsonResult as T
                        : JsonConvert.DeserializeObject<T>(jsonResult);

}

2 个答案:

答案 0 :(得分:2)

您需要将回复类型换成Task

private static async Task<T> GoRequest<T>(string url, Dictionary<string, object> parameters, HttpMethod method, string body = "")
    where T : object

答案 1 :(得分:1)

规则很简单:如果“常规”同步方法返回T,则async方法必须返回Task<T>

private static async Task<T> GoRequest<T>(string url, Dictionary<string, object> parameters, HttpMethod method,string body = "")
        where T : class

您无需更改任何其他内容:当您的async代码返回T时,编译器会确保结果实际为Task<T>

注意:由于您的async方法中没有await,因此您可以将其更改为“常规”同步方法。