Car*_*gez 2 c# xamarin xamarin.forms
我目前正在尝试以Xamarin形式保存列表。我使用以下代码片段:
var list = new List<myClass> ();
Application.Current.Properties["myList"] = list;
await Application.Current.SavePropertiesAsync();
Run Code Online (Sandbox Code Playgroud)
当我关闭应用程序并使用此代码时...
if (Application.Current.Properties.ContainsKey("myList"))
{
}
Run Code Online (Sandbox Code Playgroud)
...我无法达到这个if陈述。
我读到一些关于人们在使用此解决方案保存列表时遇到的问题,但他们通过将其转换为字符串来解决了。我不确定如何执行此操作。如果我这样做
Application.Current.Properties["myList"] = list.ToString();
Run Code Online (Sandbox Code Playgroud)
...该应用程序崩溃。
我看到有一个名为“ Settings”的插件,如果无法解决此问题,我可能需要使用它,但如果可能的话,我希望使用当前的代码。
“属性”字典只能序列化基本类型以进行存储。尝试存储其他类型(例如List可能会静默失败)。
这意味着您无法保存,List因为它不是对象的原始类型。
例如,您可以将其序列化为JSON字符串,然后它将起作用。
代码示例:
var jsonValueToSave = JsonConvert.SerializeObject(myList);
Application.Current.Properties["myList"] = jsonValueToSave;
await Application.Current.SavePropertiesAsync();
Run Code Online (Sandbox Code Playgroud)
List<string>加载回值时,请不要忘记将JSON反序列化为。
请注意,yourList.ToString()在这种情况下将不起作用。更多信息在这里。