c# [Serializable] ISerializable
来源:互联网 发布:淘宝差评如何防止骚扰 编辑:程序博客网 时间:2024/05/18 02:51
using System;using System.Threading;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization.Formatters.Soap;using System.IO;namespace SerializableAttributeTest{ class Program { static void Main(string[] args) { Person me = new Person(); me.Age = 32; me.WeightInPounds = 170; me.Time = DateTime.Now.ToLongTimeString(); //.net 环境使用二进制文件 Utility.SerializaBinary<Person>("Me.bat", me); Person p1 = Utility.DeserializenBinary<Person>("Me.bat"); if (p1 != null) { Console.WriteLine("DeSerialized Person aged:{0} WeightInPounds:{1}", p1.Age, p1.WeightInPounds); Console.WriteLine("DeSerialized Now time : {0}", me.Time); } Thread.Sleep(2000); me.Time = DateTime.Now.ToLongTimeString(); //跨平台 Utility.SerializaSoap<Person>("Me.xml", me); Person p2 = Utility.DeserializenSoap<Person>("Me.xml"); if (p2 != null) { Console.WriteLine("DeserializenSoap Person aged:{0} WeightInPounds:{1}", p2.Age, p2.WeightInPounds); Console.WriteLine("DeserializenSoap Now time : {0}", me.Time); } Asian asian = new Asian(); asian.SkinColor = "Yellow"; asian.ARPU = 15000.344f; Utility.SerializaBinary<Asian>("Asian.bat", asian); Asian a1 = Utility.DeserializenBinary<Asian>("Asian.bat"); if (a1 != null) { Console.WriteLine("DeSerialized Asian SkinColor:{0} ARPU:{1}", a1.SkinColor, a1.ARPU); } Japanese japanese = new Japanese(); japanese.SkinColor = "Yellow"; japanese.ARPU = 59000.2311f; japanese.CollegeDegrees = "H"; Utility.SerializaBinary<Japanese>("Japanese.bat", japanese); Japanese j1 = Utility.DeserializenBinary<Japanese>("Japanese.bat"); if (j1 != null) { Console.WriteLine("DeSerialized Asian SkinColor:{0} ARPU:{1} Degree:{2}", j1.SkinColor, j1.ARPU,j1.CollegeDegrees); } } } public class Utility { public static void SerializaBinary<T>(string file, T obj) where T : class { Stream s = File.Open(file, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(s, obj); s.Close(); } public static T DeserializenBinary<T>(string file) where T : class { Stream s = File.Open(file, FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); object o = bf.Deserialize(s); s.Close(); return o as T; } public static void SerializaSoap<T>(string file, T obj) where T : class { Stream s = File.Open(file, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); SoapFormatter sf = new SoapFormatter(); sf.Serialize(s, obj); s.Close(); } public static T DeserializenSoap<T>(string file) where T : class { using (Stream s = File.Open(file, FileMode.Open)) { SoapFormatter sf = new SoapFormatter(); object o = sf.Deserialize(s); s.Close(); return o as T; } } }}using System;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization.Formatters.Soap;using System.IO;namespace SerializableAttributeTest{ //默认序列化 [Serializable] class Person { public Person(){} public int Age; public int WeightInPounds; [NonSerialized] public string Time; } //自定义序列化 实现接口 ISerializable [Serializable] public class Asian : ISerializable { public string SkinColor; public float ARPU; public Asian() { } public Asian(SerializationInfo info, StreamingContext context) { SkinColor = info.GetString("SkinColor"); ARPU = (float)info.GetDouble("ARPU"); } public virtual void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("SkinColor", SkinColor); info.AddValue("ARPU", ARPU); } } [Serializable] public class Japanese : Asian { public string CollegeDegrees; public Japanese() : base() { } protected Japanese(SerializationInfo info, StreamingContext context) : base(info, context) { CollegeDegrees = info.GetString("CollegeDegrees"); } public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("CollegeDegrees", CollegeDegrees); } }}
0 0
- c# [Serializable] ISerializable
- ISerializable
- Serializable和ISerializable的区别,还有FormatterServices的用途
- C# Serializable
- C# Serializable
- c# Serializable
- C# Serializable
- c# [Serializable]
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- C# Serializable
- mysql_经典的mysql数据库集群、 备份 <Replication>。
- sql转义
- Spring笔记(二):Ioc 之注入与装配
- Ubuntu、gcc、kernel版本之间的复杂关系小结
- _strategy.py
- c# [Serializable] ISerializable
- VM虚拟机Ubuntu下安装VMTools
- 如何从网络下载文件到本地
- MyEclipse 10 搭建SSH环境
- MySql外键约束详解
- Maven的安装、配置及使用入门
- 使用CoreImage进行人脸识别
- 找工作遇到的其他技术问题及解答(1)
- 删除 百度卫士。。。。。