当我在Xamarin表单中使用Application.Current.SavePropertiesAsync时,List不会被保存

时间:2017-04-23 16:15:04

标签: c# xamarin xamarin.forms

我目前正在尝试以Xamarin格式保存列表。我使用此代码段:

var list = new List<myClass> ();

Application.Current.Properties["myList"] = list;
await Application.Current.SavePropertiesAsync();

当我关闭应用程序并使用此代码时......

if (Application.Current.Properties.ContainsKey("myList"))
{

}

......我无法达到这个声明。

我读过一些关于人们在使用此解决方案保存列表时遇到问题但他们通过将其转换为字符串来解决它的问题。我对如何做到这一点有点不确定。如果我这样做......

Application.Current.Properties["myList"] = list.ToString();

...应用程序崩溃。

我看到有一个名为&#34;设置&#34;如果没有解决这个问题的方法,我可能需要使用它,但如果可能的话,我宁愿使用我当前的代码。

1 个答案:

答案 0 :(得分:3)

  

属性字典只能序列化基本类型   存储。试图存储其他类型(例如List可以   无声地失败。)

这意味着您无法保存List,因为它不是原始类型的对象。
你可以将它序列化为JSON字符串,例如它可以工作。
代码示例:

var jsonValueToSave = JsonConvert.SerializeObject(myList);
Application.Current.Properties["myList"] = jsonValueToSave;
await Application.Current.SavePropertiesAsync();

在重新加载值时,不要忘记将JSON反序列化为List<string>

请注意yourList.ToString()在这种情况下不起作用。更多信息here

P.S。:熟悉official documentation&amp;在另一个related thread上查看此帖子。