序列化和反序列化

class Program
{

public static void Main()
{

// 创建一个新的测试对象

TestSimpleObject obj = new TestSimpleObject();

 

Console.WriteLine("Before serialization the object contains: ");

obj.Print();

 

// 创建一个文件"data.xml"并将对象序列化后存储在其中

Stream stream = File.Open("data.xml", FileMode.Create);

SoapFormatter formatter = new SoapFormatter();

//BinaryFormatter formatter = new BinaryFormatter();

 

formatter.Serialize(stream, obj);

stream.Close();

 

// 将对象置空

obj = null;

 

// 打开文件"data.xml"并进行反序列化得到对象

stream = File.Open("data.xml", FileMode.Open);

formatter = new SoapFormatter();

//formatter = new BinaryFormatter();

 

obj = (TestSimpleObject)formatter.Deserialize(stream);

stream.Close();

 

Console.WriteLine("");

Console.WriteLine("After deserialization the object contains: ");

obj.Print();

}

}

 

// 一个要被序列化的测试对象的类

[Serializable()]

public class TestSimpleObject
{

public int member1;

public string member2;

public string member3;

public double member4;

 

// 标记该字段为不可被序列化的

[NonSerialized()]
public string member5;

 

public TestSimpleObject()
{

member1 = 11;

member2 = "hello";

member3 = "hello";

member4 = 3.14159265;

member5 = "hello world!";

}

 

public void Print()
{

Console.WriteLine("member1 = '{0}'", member1);

Console.WriteLine("member2 = '{0}'", member2);

Console.WriteLine("member3 = '{0}'", member3);

Console.WriteLine("member4 = '{0}'", member4);

Console.WriteLine("member5 = '{0}'", member5);

}



}


posted @ 2016-12-14 13:31  温柔牛  阅读(125)  评论(0编辑  收藏  举报