【序列化】小结,逐步完善中
来源:互联网 发布:老电视如何看网络电视 编辑:程序博客网 时间:2024/06/13 23:08
网上查了资料,序列化有多种方法,这里我写上自己刚用过的一种生成XML文件的,有需要的朋友可以自己百度一下其他方法。
1.添加引用 “using System.Xml.Serialization;”;
2.用”[Serializable]“标记上要序列化的类,如下图
[Serializable] public class LogService { public string strName; public string strImage; public string strToolNum; public List<MainProperty> MainPropertyList; }
3.将第2步中的要序列化的类“LogService”中的变量都赋值,包括“List<ChildProperty> ChildPropertyList”;
4.在需要生成XML序列化文件的代码位置处,例如“序列化”按钮的单击事件中添加如下代码:
XmlSerializer xs = new XmlSerializer(typeof(LogService)); Stream stream = new FileStream(保存路径(含xml文件名和后缀), FileMode.Create, FileAccess.Write, FileShare.Read); xs.Serialize(stream, 赋值后的“LogService”实例); //stream.Close(); stream.Dispose(); //销毁资源,否则资源将一直被占用导致无法【反序列化】;
到这,序列化一个XML文件就完成了,下面是将该文件反序列化;
5.反序列化代码很简单,如下:
XmlSerializer xs = new XmlSerializer(typeof(LogService)); Stream stream = new FileStream(文件保存路径(含xml文件名和后缀), FileMode.Open, FileAccess.Read, FileShare.Read); LogService logS = xs.Deserialize(stream) as LogService; stream.Dispose(); //销毁资源,否则资源将一直被占用导致无法【序列化】;
这样,序列化的文件就被读到“LogService”类的实例“logS”中了。
完整例子:
/// <summary> /// 序列化指定类【CAllResult】 /// </summary> /// <param name="savePath">序列化后的保存path(含.xml)</param> /// <param name="cResult">待序列化的类</param> /// <returns></returns> public static int SerializeXml(string savePath, CAllResult cResult) { try { if (cResult.ProjectName == "") { MessageBox.Show("未设置工程名!"); return 2; } XmlSerializer xs = new XmlSerializer(typeof(CAllResult)); Stream stream = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.Read); xs.Serialize(stream, cResult); stream.Dispose(); return 0; } catch (System.Exception ex) { MessageBox.Show("序列化异常!" + ex.ToString()); return 1; } } /// <summary> /// 反序列化指定类【CAllResult】 /// </summary> /// <param name="savePath">待反序列化的文件所在path(含.xml)</param> /// <param name="cResult">反序列化后存储获得的数据的类</param> /// <returns></returns> public static int DeSerializeXml(string savePath, ref CAllResult cResult) { try { XmlSerializer xs = new XmlSerializer(typeof(CAllResult)); Stream stream = new FileStream(savePath, FileMode.Open, FileAccess.Read, FileShare.Read); cResult = xs.Deserialize(stream) as CAllResult; stream.Dispose(); return 0; } catch (System.Exception ex) { MessageBox.Show("反序列化异常!" + ex.ToString()); return 1; } }
0 0
- 【序列化】小结,逐步完善中
- 【TreeView】个人使用小结(逐步完善中...)
- 【操作文件、文件夹】个人小结,逐步完善中
- 【WeifenLuo.WinFormsUI.Docking】的个人小结,逐步完善中
- Css 的应用--逐步完善中
- Effective C++(逐步完善中)
- redis 学习笔记整理(正在逐步完善中)
- 逐步完善自己的人生
- mysql 命令记录,逐步完善
- J-Final 使用小结 (完善中)
- Android中Parcelable序列化小结
- Spring配置+数据源配置(逐步完善Spring架构体系中)
- X-code 真机运行包的错误以及解决办法(逐步完善中)
- 用C写的json解析工具(逐步完善中)
- 画图板的逐步完善。(一)
- RSA算法(部分实现,逐步完善)
- Java工具类 Tool(逐步添加完善)
- xml 文件部分抬头(逐步完善)
- 怎样培养独挡一面的能力 .
- ARC指南3 - @property
- jQuery学习笔记之十一------动画效果
- Artificial Neural Networks && FileStorage of OpenCV
- String.format函数使用方法介绍
- 【序列化】小结,逐步完善中
- Unity3D项目程序加密1——在Unity3D里使用自己的dll
- Hdu 2795 Billboard 单点更新,区间最值
- Linux makefile 教程 非常详细
- kvm下安装windows
- 由性能优化引起的活锁现象
- GetProcAddressEx跨进程获取导出函数地址
- js visibility和display区别(附代码实例)
- [android基础知识] 之八:线程的使用之Handler