using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace serializable
{
/// <summary>
/// 使用特性自定义序列化
/// </summary>
[Serializable]
public class Program
{
public string a = "Hello World";
/// <summary>
/// 序列化时调用
/// </summary>
/// <param name="context"></param>
[OnSerializing]
internal void Onserializing(StreamingContext context)
{
a = a.ToLower();
}
/// <summary>
/// 反序列化时调用
/// </summary>
/// <param name="context"></param>
[OnDeserialized]
internal void Deserialized(StreamingContext context)
{
a = a.ToUpper();
}
}
public class Test
{
/// <summary>
/// 进行序列化
/// </summary>
public void Serialize()
{
Program test1 = new Program();
FileStream fileStream = new FileStream("c:\\test.dat",FileMode.Create);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(fileStream, test1);
Console.Write(test1.a);
fileStream.Close();
}
public void DeSerialize()
{
FileStream fileStream = new FileStream("c:\\test.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryFormatter b = new BinaryFormatter();
Program test1 = b.Deserialize(fileStream) as Program;
Console.WriteLine(test1.a);
fileStream.Close();
}
public static void Main()
{
Program test1 = new Program();
Console.WriteLine("原始数据:{0}",test1.a);
Test test2 = new Test();
Console.WriteLine("序列化后的数据:");
test2.Serialize();
Console.WriteLine("反序列化后的数据:");
test2.DeSerialize();
Console.ReadKey();
}
}
}