2016-08-11 12 views
0

私は、Windows 10 UWP(C#の)ConvertAll(UWP C#の)

私が持っている問題のためのアプリを書いて

private string GenerateSignature(Dictionary<string, string> parameters, string method, string endpoint) 
    { 
     var baserequesturi = Regex.Replace(System.Net.WebUtility.HtmlEncode(this.ApiUrl + endpoint), "(%[0-9a-f][0-9a-f])", c => c.Value.ToUpper()); 
     var normalized = NormalizeParameters(parameters); 

     var signingstring = string.Format("{0}&{1}&{2}", method, baserequesturi, 
      string.Join("%26", normalized.OrderBy(x => x.Key).ToList().ConvertAll(x => x.Key + "%3D" + x.Value))); 
     var signature = 
      Convert.ToBase64String(HashHMAC(Encoding.UTF8.GetBytes(this.ConsumerSecret), 
       Encoding.UTF8.GetBytes(signingstring))); 
     Debug.WriteLine(signature); 
     return signature; 
    } 

しかし.ConvertAllは、このエラーを表示し、私はこのコードを持っている

Severity Code Description Project File Line Suppression State 
Error CS0029 Cannot implicitly convert type 'System.Threading.Tasks.Task<string>' to 'string' Milano C:\Users\nemes\Documents\GitHub\Milano_pizza\Milano\MainPage.xaml.cs 41 Active 

どのようにこの問題を解決するためにコードを書き直す必要がありますか?

感謝の

UPDATE

var baserequesturi = Regex.Replace(System.Net.WebUtility.HtmlEncode(this.ApiUrl + endpoint), "(%[0-9a-f][0-9a-f])", c => c.Value.ToUpper()); 
     var normalized = NormalizeParameters(parameters); 

NormalizeParameters

private Dictionary<string, string> NormalizeParameters(Dictionary<string, string> parameters) 
    { 
     var result = new Dictionary<string, string>(); 
     foreach (var pair in parameters) 
     { 
      var key = System.Net.WebUtility.HtmlEncode(System.Net.WebUtility.HtmlDecode(pair.Key)); 
      key = Regex.Replace(key, "(%[0-9a-f][0-9a-f])", c => c.Value.ToUpper()).Replace("%", "%25"); 
      var value = System.Net.WebUtility.HtmlEncode(System.Net.WebUtility.HtmlDecode(pair.Value)); 
      value = Regex.Replace(value, "(%[0-9a-f][0-9a-f])", c => c.Value.ToUpper()).Replace("%", "%25"); 
      result.Add(key, value); 
     } 
     return result; 
    } 
+0

あなたは本当に '.ConvertAll'に由来していますか?いくつかのパラメータはおそらくasyncメソッドによって取得され、awaitキーワードは使用しませんでした。 「メソッド」、「baserequesturi」、および「正規化された」値の取得方法を教えてください。 –

+0

編集済み投稿@M.Pipal –

+0

これらの2つはよく見えます(NormalizeParametersが非同期でない場合)。このコードに関連する場所で非同期メソッドを使用しましたか? –

答えて

0

だけではなく、リスト固有ConvertAllの標準Selectを使用しています。

+0

多分それは私の問題を解決していただきありがとうございます。 –