Xamarin.forms Forms不能隐式转换类型';system.threading.tasks.task>;到system.collections.generic.List
嗨,我是编程新手,但目前我遇到xamarin forms无法将类型“system.threading.tasks.task>隐式转换为system.collections.generic.List,因为我尝试在启动应用程序时使用全局变量来优化应用程序,同时尝试将菜单项列表设置为其他页面将访问的全局变量,它给了我那个错误。我不知道如何解决这个问题,所以请有人帮助我 这是我的App.csXamarin.forms Forms不能隐式转换类型';system.threading.tasks.task>;到system.collections.generic.List,xamarin.forms,Xamarin.forms,嗨,我是编程新手,但目前我遇到xamarin forms无法将类型“system.threading.tasks.task>隐式转换为system.collections.generic.List,因为我尝试在启动应用程序时使用全局变量来优化应用程序,同时尝试将菜单项列表设置为其他页面将访问的全局变量,它给了我那个错误。我不知道如何解决这个问题,所以请有人帮助我 这是我的App.cs private static int globalVariable = 1; public static Lis
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;
}
private static int globalVariable=1;
public static List foodList=new List();
私有静态列表beverageList=新列表();
公共静态整数全局变量
{
获取{return globalVariable;}
设置{globalVariable=value;}
}
公共静态列表食物列表
{
获取{return foodList;}
设置{foodList=value;}
}
公共静态列表
{
获取{return beverageList;}
设置{beverageList=value;}
}
公共应用程序()
{
全局变量=10;
BeverageList=getBeverageList();
FoodList=getFoodList();
}
公共异步任务getBeverageList()
{
康斯坦茨常数=新康斯坦茨();
HttpClient=新的HttpClient();
client.BaseAddress=新Uri(“http://172.20.129.44/");
//为JSON格式添加Accept标头。
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
HttpResponseMessage response=新的HttpResponseMessage();
response=client.GetAsync(“WebServices/menu.svc/GetBeveragesJSON”).Result;
if(响应。IsSuccessStatusCode)
{
string jsonString=await response.Content.ReadAsStringAsync();
动态dynamicObject=JsonConvert.DeserializeObject(jsonString);
int itemId;
字符串itemName;
字符串itemCategory;
字符串项子类别;
字符串项描述;
字符串项图像;
int itemQuantity;
双项目价格;
字符串itemStatus;
字符串itemAddOn;
for(int i=0;i
显示的错误将一个额外的异步方法扭曲到构造函数中:
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()
的结果
否则将返回任务本身。这导致了你的错误:
无法将类型“System.Threading.Tasks.Task”隐式转换为
'System.Collections.Generic.List
将额外的异步方法扭曲到构造函数中:
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()
的结果
否则将返回任务本身。这导致了你的错误:
无法将类型“System.Threading.Tasks.Task”隐式转换为
'System.Collections.Generic.List
谢谢Felix这对我真的很有帮助如果我的回答对你有帮助,请接受我的回答:xamarin表单的可能副本不能隐式转换类型“system.threading.tasks.tasks”在两个不同的帐户下不要问同一个问题两次。谢谢请参阅()Thankuu Felix it real help Me如果我的回答对您有帮助,请接受我的回答:xamarin表单的可能重复项不能隐式转换类型'system.threading.tasks.tasks'。在两个不同的帐户下,不要问同一问题两次。谢谢你真的试过这个吗?没有异步构造函数。@StephaneDelcroix你说得对。没有想到这一点。我修好了,你真的试过吗?没有异步构造函数。@StephaneDelcroix你说得对。没有想到这一点。我修好了。