2016-11-16 18 views
-1

こんにちは私はプログラミングには新しいですが、現在私はxamarinフォームが暗黙的に' system.threading.tasks 'タイプ.task> to system.collections.generic.List私は、他のページがアクセスするグローバル変数にメニューアイテムのリストを設定しようとしているときにアプリケーションを最適化するためにアプリケーションを起動するときにグローバル変数を使用しようとしています、それは私にそのエラーを与えた。私は誰かが私にここXamarin.Formsタイプ 'system.threading.tasks.task>をsystem.collections.generic.Listに暗黙的に変換できません

を助けてくださいので、その問題を解決する方法は考えているんです、私のApp.cs

private static int globalVariable = 1; 
public static List<MenuItemModel> foodList = new List<MenuItemModel>(); 
private static List<MenuItemModel> beverageList = new List<MenuItemModel>(); 
public static int GlobalVariable 
{ 
    get { return globalVariable; } 
    set { globalVariable = value; } 
} 
public static List<MenuItemModel> FoodList 
{ 
    get { return foodList; } 
    set { foodList = value; } 
} 
public static List<MenuItemModel> BeverageList 
{ 
    get { return beverageList; } 
    set { beverageList = value; } 
} 

public App() 
{ 
    GlobalVariable = 10; 

    BeverageList = getBeverageList(); 
    FoodList = getFoodList(); 
} 
public async Task<List<MenuItemModel>> getBeverageList() 
{ 
    ConstantCS constant = new ConstantCS(); 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri("http://172.20.129.44/"); 


    // Add an Accept header for JSON format. 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 


    HttpResponseMessage response = new HttpResponseMessage(); 
    response = client.GetAsync("WebServices/menu.svc/GetBeveragesJSON").Result; 

    if (response.IsSuccessStatusCode) 
    { 
     string jsonString = await response.Content.ReadAsStringAsync(); 
     dynamic dynamicObject = JsonConvert.DeserializeObject(jsonString); 

     int itemId_; 
     string itemName_; 
     string itemCategory_; 
     string itemSubCategory_; 
     string itemDescription_; 
     string itemImage_; 
     int itemQuantity_; 
     double itemPrice_; 
     string itemStatus_; 
     string itemAddOn_; 

     for (int i = 0; i < dynamicObject.d.Count; i++) 
     { 
      itemId_ = dynamicObject.d[i]["itemID"]; 
      itemName_ = dynamicObject.d[i]["itemName"].ToString(); 
      itemCategory_ = dynamicObject.d[i]["itemCategory"].ToString(); 
      itemSubCategory_ = dynamicObject.d[i]["itemSubCategory"].ToString(); 
      itemDescription_ = dynamicObject.d[i]["itemDesc"].ToString(); 
      itemImage_ = dynamicObject.d[i]["itemImg"].ToString(); 
      itemQuantity_ = int.Parse(dynamicObject.d[i]["itemQty"].ToString()); 
      itemPrice_ = double.Parse(dynamicObject.d[i]["itemPrice"].ToString()); 
      itemStatus_ = dynamicObject.d[i]["itemStatus"].ToString(); 
      itemAddOn_ = dynamicObject.d[i]["itemRequest"].ToString(); 

      string itemURL_ = constant.PhotoBaseURL + itemImage_; 



      beverageList.Add(new MenuItemModel(itemId_, itemName_, itemCategory_, itemSubCategory_, itemDescription_, itemURL_, itemQuantity_, itemPrice_, itemStatus_, itemAddOn_)); 
     } 

    } 
    else 
    { 
     //Debug.WriteLine("It entered else not if"); 
    } 
    return beverageList; 
} 

あなたのコンストラクタに

+0

Thankuuフェリックスそれは本当にそれはあなたを助けたなら、私は –

+0

私の答えを受け入れる助けてください:あなたのエラーにつながるD [暗黙的にタイプを変換することはできませんフォーム「system.threading.tasks.task xamarin <システムの –

+1

可能な複製.collections.generic list to system.collections.generic List](http://stackoverflow.com/questions/40623973/xamarin-forms-cannot-implicitly-convert-type-system-threading-tasks-tasksystem) –

答えて

2

ワープにメソッドの非同期余分を示されたエラー:

public App() 
{ 
    Initialize(); //no need to await this 
} 

public async Task Initialize() 
{ 
    GlobalVariable = 10; 

    BeverageList = await getBeverageList(); //use await here! 
    FoodList = await getFoodList();   //use await here! 
} 

今はgetFoodList()getBeverageList()の結果をawaitすることができます。

それ以外の場合はTaskが返されます。

Cannot implicitly convert type 'System.Threading.Tasks.Task' to 'System.Collections.Generic.List< MenuItemModel >.

+0

実際にこれを試しましたか?非同期コンストラクタのようなものはありません。 –

+0

@StephaneDelcroixあなたは正しいです。これについて考えなかった。それを私が直した。 –

関連する問題