zoukankan      html  css  js  c++  java
  • IsolatedStorageSettings存储数据_____简单_____自定义(复杂)____数据

    今天遇到一个很郁闷的事情,就是使用IsolatedStorageSettings存储数据时,简单的类型,如string,int等存储读取都没有问题,可换成一个自定义的数据类时就会出错,总是取不到对应key的value值。但查看__ApplicationSettings时发现这个key是存在,很郁闷。

    后来找到问题的所在是存储自定义数据类时要使用[DataContract](数据契约)和[DataMember],只有这样序列化的对象的实例才可以保存到IsolatedStorageSettings中,并且能正确的读取出来,所以现在特意写下这篇文章已做记录。

    一、简单类型数据

     数据存储

    View Code
     1 //获取IsolatedStorageSettings
     2 var settings = IsolatedStorageSettings.ApplicationSettings;
     3 //定义需要存储的键/值对
     4 String key = "singledata";
     5 String value = "简单数据";
     6 //判断是否已经存在,存在修改,不存在添加
     7 if (settings.Contains(key))
     8 {
     9     settings[key] = value;
    10 }
    11 else
    12 {
    13     settings.Add(key, value);
    14 }
    15 //保存信息,如果不调用的话,重启后数据会丢失
    16 settings.Save();

     数据读取

    View Code
     1 String key = "singledata";
     2 String value = String.Empty;
     3 try
     4 {
     5     //从IsolatedStorageSettings获取字符串信息
     6     var settings = IsolatedStorageSettings.ApplicationSettings;
     7     bool isFind = settings.TryGetValue(key, out value);
     8     if (!isFind)
     9     {
    10         value = String.Empty;
    11     }
    12 }
    13 catch (System.Exception ex)
    14 {
    15     //未找到
    16     MessageBox.Show(ex.Message);
    17 }

    二、自定义数据

    自定义数据类

    View Code
     1 [DataContract]
     2 public class CustomData
     3 {
     4     [DataMember]
     5     public string Name { get; set; }
     6     [DataMember]
     7     public string ProductId { get; set; }
     8     [DataMember]
     9     public string ProductName { get; set; }
    10 }
    11 注意:此处必须使用[DataContract](数据契约)和[DataMember],只有这样序列化的对象的实例才可以保存到IsolatedStorageSettings中。使用[DataContract]需要添加引用System.Runtime.Serialization。

    保存实例化对象

    View Code
     1 //获取IsolatedStorageSettings
     2 var settings = IsolatedStorageSettings.ApplicationSettings;
     3 //定义需要存储的key
     4 String key = "CustomData";
     5 //实例化对象
     6 CustomData custdata = new CustomData();
     7 custdata.Name = "天津日报";
     8 custdata.ProductId = "Xeb20120512";
     9 custdata.ProductName = "天津日报";
    10 try
    11 {
    12     //判断是否已经存在,存在修改,不存在添加
    13     if (settings.Contains(key))
    14     {
    15         settings[key] = custdata;
    16     }
    17     else
    18     {
    19         settings.Add(key, custdata);
    20     }
    21     //保存信息,如果不调用的话,重启后数据会丢失
    22     settings.Save();
    23 }
    24 catch (System.Exception ex)
    25 {
    26     //保存失败,如果保存的是未实例化的对象,会报异常
    27     MessageBox.Show(ex.Message);
    28 }

    获取存储的实例化对象

    View Code
    1 String key = "CustomData";
    2 CustomData custdata = null;
    3 //从IsolatedStorageSettings获取字符串信息
    4 var settings = IsolatedStorageSettings.ApplicationSettings;
    5 if (settings.Contains(key))
    6 {
    7     custdata = settings[key] as CustomData;
    8 }

    代码:

    https://files.cnblogs.com/qq278360339/PhoneApp1.rar

  • 相关阅读:
    table表格
    常见页面布局方式(三种框架集)
    学习标签属性3
    学习标签属性2
    学习标签属性1
    Purity in My Programming: Functions in Go
    cron一有趣处
    go函数作为一等民
    LRU算法
    go中的一个网络重连复用
  • 原文地址:https://www.cnblogs.com/qq278360339/p/2499762.html
Copyright © 2011-2022 走看看