博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IsolatedStorageSettings存储数据_____简单_____自定义(复杂)____数据
阅读量:7049 次
发布时间:2019-06-28

本文共 2442 字,大约阅读时间需要 8 分钟。

今天遇到一个很郁闷的事情,就是使用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 else12 {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 try11 {12     //判断是否已经存在,存在修改,不存在添加13     if (settings.Contains(key))14     {15         settings[key] = custdata;16     }17     else18     {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://www.cnblogs.com/qq278360339/archive/2012/05/14/2499762.html

你可能感兴趣的文章
前端代码规范
查看>>
UITableView:下拉刷新和上拉加载更多
查看>>
CFileDialog
查看>>
centOS Python 安装2.7以上版本
查看>>
最近気になる清掃
查看>>
C语言下的简易计算器
查看>>
git 分支
查看>>
一类分治问题
查看>>
[ZJOI2017]树状数组
查看>>
Android SDK无法更新问题解决
查看>>
LeetCode – Refresh – N-Queens II
查看>>
LeetCode 639: DecodeWaysII
查看>>
Linux系统简介--LInix系统随笔(一)
查看>>
TCP接入层的负载均衡、高可用、扩展性架构
查看>>
使用Kieker(AspectJ)监控控制台程序
查看>>
C#多线程之旅(1)——介绍和基本概念
查看>>
Spring常用注解汇总
查看>>
10大最重要的Web安全风险之六--A6-安全误配置
查看>>
Hibernate【与Spring整合】
查看>>
NOIP2018 游记
查看>>