System.Runtime.Serialization 命名空间(序列化和反序列化)
来源:互联网 发布:集贤一中网络空间 编辑:程序博客网 时间:2024/05/22 03:34
https://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.ondeserializedattribute.aspx
using System;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;public class Test{ public static void Main() { // Create a new TestSimpleObject object. TestSimpleObject obj = new TestSimpleObject(); Console.WriteLine("\n Before serialization the object contains: "); obj.Print(); // Open a file and serialize the object into binary format. Stream stream = File.Open("DataFile.dat", FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); try { formatter.Serialize(stream, obj); // Print the object again to see the effect of the //OnSerializedAttribute. Console.WriteLine("\n After serialization the object contains: "); obj.Print(); // Set the original variable to null. obj = null; stream.Close(); // Open the file "DataFile.dat" and deserialize the object from it. stream = File.Open("DataFile.dat", FileMode.Open); // Deserialize the object from the data file. obj = (TestSimpleObject)formatter.Deserialize(stream); Console.WriteLine("\n After deserialization the object contains: "); obj.Print(); Console.ReadLine(); } catch (SerializationException se) { Console.WriteLine("Failed to serialize. Reason: " + se.Message); throw; } catch (Exception exc) { Console.WriteLine("An exception occurred. Reason: " + exc.Message); throw; } finally { stream.Close(); obj = null; formatter = null; } }}// This is the object that will be serialized and deserialized.[Serializable()]public class TestSimpleObject{ // This member is serialized and deserialized with no change. public int member1; // The value of this field is set and reset during and // after serialization. private string member2; // This field is not serialized. The OnDeserializedAttribute // is used to set the member value after serialization. [NonSerialized()] public string member3; // This field is set to null, but populated after deserialization. private string member4; // Constructor for the class. public TestSimpleObject() { member1 = 11; member2 = "Hello World!"; member3 = "This is a nonserialized value"; member4 = null; } public void Print() { Console.WriteLine("member1 = '{0}'", member1); Console.WriteLine("member2 = '{0}'", member2); Console.WriteLine("member3 = '{0}'", member3); Console.WriteLine("member4 = '{0}'", member4); } [OnSerializing()] internal void OnSerializingMethod(StreamingContext context) { member2 = "This value went into the data file during serialization."; } [OnSerialized()] internal void OnSerializedMethod(StreamingContext context) { member2 = "This value was reset after serialization."; } [OnDeserializing()] internal void OnDeserializingMethod(StreamingContext context) { member3 = "This value was set during deserialization"; } [OnDeserialized()] internal void OnDeserializedMethod(StreamingContext context) { member4 = "This value was set after deserialization."; }}// Output:// Before serialization the object contains: // member1 = '11'// member2 = 'Hello World!'// member3 = 'This is a nonserialized value'// member4 = ''//// After serialization the object contains: // member1 = '11'// member2 = 'This value was reset after serialization.'// member3 = 'This is a nonserialized value'// member4 = ''//// After deserialization the object contains: // member1 = '11'// member2 = 'This value went into the data file during serialization.'// member3 = 'This value was set during deserialization'// member4 = 'This value was set after deserialization.'
0 0
- System.Runtime.Serialization 命名空间(序列化和反序列化)
- 对象序列化:使用System.Xml.Serialization命名空间
- Java之关于Serialization序列化和反序列化
- Java Serialization/序列化/反序列化
- Java Serialization/序列化/反序列化
- 对象序列化:使用System.Xml.Serialization命名空间(转)
- runtime序列化&反序列化
- boost serialization 序列化/反序列化 详细用法
- 序列化(serialization) & 反序列化(de-serialization)- 序列化到内存xml
- 7.Binary Tree Serialization-二叉树的序列化和反序列化(中等题)
- 序列和反序列化
- 序列和反序列化
- 引用System.Runtime.Serialization.Json 提示 命名空间 不存在类型或命名空间名称 json
- 引用System.Runtime.Serialization.Json 提示 命名空间 不存在类型或命名空间名称 json (
- iOS 序列化与反序列化(runtime) 01
- iOS 序列化与反序列化(runtime) 02
- Boost中支持序列化反序列化的库--boost.serialization
- 利用boost的serialization库实现c++对象的序列化与反序列化
- [iOS]如何向 appstore 查询已发布 APP 的信息?
- j2se使用ActionListener实现界面上按钮点击的事件监听操作
- Android WebView 开发详解(三)
- pjlib线程实现简析
- centos安装git
- System.Runtime.Serialization 命名空间(序列化和反序列化)
- 使用android studio导入之前版本系统的project sync failed 解决办法
- Eclipse无法创建TOMCAT6,TOMCAT7
- 定位
- 马云致员工信---2015,阿里人,改变自己,创造未来!
- 我的第一篇博客
- Android 各个版本WebView
- Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误
- CocoaPods安装和使用教程