代码: using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleApplication3 { /// <summary> /// 自定义序列化类 /// </summary> [Serializable] public class TestAttributeSerializable { public string a = "HelloWorld"; //序列化时调用 [OnSerializing] internal void OnSerializing(StreamingContext context) { a = a.ToLower(); } //反序列化时调用 [OnDeserialized] internal void OnDeserialized(StreamingContext context) { a = a.ToUpper(); } } public class Test { /// <summary> /// BinaryFormatter 进行序列化 /// </summary> public void DoSerialize() { TestAttributeSerializable test = new TestAttributeSerializable(); Stream stream = File.Open("c://TestAttributeSerializable.dat", FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(stream, test); stream.Close(); Console.WriteLine(test.a); } /// <summary> /// BinaryFormatter 进行反序列化 /// </summary> public void DeDeserialize() { Stream stream = File.Open("c://TestAttributeSerializable.dat", FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); TestAttributeSerializable test = (TestAttributeSerializable)bf.Deserialize(stream); stream.Close(); Console.WriteLine(test.a); } static void Main(string[] args) { TestAttributeSerializable test = new TestAttributeSerializable(); Console.WriteLine("原始数据:{0}", test.a); Test test1 = new Test(); Console.WriteLine("序列化后的数据:"); test1.DoSerialize(); Console.WriteLine("反序列化后的数据库:"); test1.DeDeserialize(); } } } 运行结果: 原始数据:HelloWorld 序列化后的数据: helloworld 反序列化后的数据库: HELLOWORLD