• 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

  • 相关阅读:
    Memcached
    sleep和wait的区别
    基于.net Core+EF Core项目的搭建(一)
    .net Core中使用AutoMapper
    发布.net core应用程序并部署到IIS上
    IoC原理-使用反射/Emit来实现一个最简单的IoC容器
    浅谈(IOC)依赖注入与控制反转(DI)
    使用MD5加密字符串
    C#中HttpWebRequest的用法详解
    学习memcached的一个网站
  • 原文地址:https://www.cnblogs.com/qq278360339/p/2499762.html
Copyright © 2020-2023  润新知