C# 序列化帮助类
来源:互联网 发布:js input框不可修改 编辑:程序博客网 时间:2024/06/05 20:24
using System;using System.Xml;using System.IO;using System.Xml.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization.Formatters.Soap;namespace DotNet.Utilities{ #region 序列化 public class Serialize { /// <summary> /// 序列化为对象 /// </summary> /// <param name="objname"></param> /// <param name="obj"></param> public static void BinarySerialize(string objname,object obj) { try { string filename = objname + ".Binary"; if(System.IO.File.Exists(filename)) System.IO.File.Delete(filename); using (FileStream fileStream = new FileStream(filename, FileMode.Create)) { // 用二进制格式序列化 BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(fileStream, obj); fileStream.Close(); } } catch(Exception ex) { throw new Exception(ex.Message); } } /// <summary> /// 从二进制文件中反序列化 /// </summary> /// <param name="objname"></param> /// <returns></returns> public static object BinaryDeserialize(string objname) { System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter(); //二进制格式反序列化 object obj; string filename = objname + ".Binary"; if(!System.IO.File.Exists(filename)) throw new Exception("在反序列化之前,请先序列化"); using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { obj = formatter.Deserialize(stream); stream.Close(); } //using (FileStream fs = new FileStream(filename, FileMode.Open)) //{ // BinaryFormatter formatter = new BinaryFormatter(); // object obj = formatter.Deserialize(fs); //} return obj; } /// <summary> /// 序列化为soap 即xml /// </summary> /// <param name="objname"></param> /// <returns></returns> public static void SoapSerialize(string objname,object obj) { try { string filename=objname+".Soap"; if(System.IO.File.Exists(filename)) System.IO.File.Delete(filename); using (FileStream fileStream = new FileStream(filename, FileMode.Create)) { // 序列化为Soap SoapFormatter formatter = new SoapFormatter(); formatter.Serialize(fileStream, obj); fileStream.Close(); } } catch(Exception ex) { throw new Exception(ex.Message); } } /// <summary> /// 反序列对象 /// </summary> /// <param name="objname"></param> public static object SoapDeserialize(string objname) { object obj; System.Runtime.Serialization.IFormatter formatter = new SoapFormatter(); string filename=objname+".Soap"; if (!System.IO.File.Exists(filename)) throw new Exception("对反序列化之前,请先序列化"); //Soap格式反序列化 using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { obj = formatter.Deserialize(stream); stream.Close(); } return obj; } public static void XmlSerialize(string objname,object obj) { try { string filename=objname+".xml"; if(System.IO.File.Exists(filename)) System.IO.File.Delete(filename); using (FileStream fileStream = new FileStream(filename, FileMode.Create)) { // 序列化为xml XmlSerializer formatter = new XmlSerializer(typeof(Car)); formatter.Serialize(fileStream, obj); fileStream.Close(); } } catch(Exception ex) { throw new Exception(ex.Message); } } /// <summary> /// 从xml序列中反序列化 /// </summary> /// <param name="objname"></param> /// <returns></returns> public static object XmlDeserailize(string objname) { // System.Runtime.Serialization.IFormatter formatter = new XmlSerializer(typeof(Car)); string filename=objname+".xml"; object obj; if (!System.IO.File.Exists(filename)) throw new Exception("对反序列化之前,请先序列化"); //Xml格式反序列化 using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { XmlSerializer formatter = new XmlSerializer(typeof(Car)); obj = (Car)formatter.Deserialize(stream); stream.Close(); } return obj; } } #endregion #region 要序列化的类 [Serializable] public class Car { private string _Price; private string _Owner; private string m_filename; [XmlElement(ElementName = "Price")] public string Price { get { return this._Price; } set { this._Price = value; } } [XmlElement(ElementName = "Owner")] public string Owner { get { return this._Owner; } set { this._Owner = value; } } public string Filename { get { return m_filename; } set { m_filename = value; } } public Car(string o, string p) { this.Price = p; this.Owner = o; } public Car() { } } #endregion #region 调用示例 public class Demo { public void DemoFunction() { //序列化 Car car = new Car("chenlin", "120万"); Serialize.BinarySerialize("Binary序列化", car); Serialize.SoapSerialize("Soap序列化", car); Serialize.XmlSerialize("XML序列化", car); //反序列化 Car car2 = (Car)Serialize.BinaryDeserialize("Binary序列化"); car2 = (Car)Serialize.SoapDeserialize("Soap序列化"); car2 = (Car)Serialize.XmlDeserailize("XML序列化"); } } #endregion}
0 0
- C# 序列化帮助类
- 序列化帮助类
- C#序列化反序列化帮助类
- C# 序列化反序列化XML的帮助类
- C#时间帮助类
- c# JsonHelper 帮助类
- C# GridView帮助类
- C# Cookie帮助类
- C# 时间帮助类
- C# js帮助类
- C# 分词帮助类
- FireBird C# 帮助类
- C# CookieHelper帮助类
- c# base64帮助类
- C# http帮助类
- C#类的序列化
- C#实例类序列化
- c#类的序列化
- mysql查询主键
- swift中按钮UIButton的文字竖直显示
- C++ Virtual函数
- python kmp算法简单实现
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- C# 序列化帮助类
- 学习OpenCV---阈值化
- Linux清理cached缓存
- Java流程控制的陷阱——if语句和循环体的陷阱
- assert()函数用法总结
- MySQL学习笔记 4:自定义函数和MySQL存储过程
- SQLAlchemy批量插入性能比较
- windows环境布置bttracker服务器和下载分享
- Java web service 实例