using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.CompilerServices; using System.Runtime.Serialization.Formatters.Binary; namespace testserializer { [Serializable] public class testserializer:ISerializable { public bool called = false; public testserializer() { Console.WriteLine("testserializer default constructor"); } public testserializer(SerializationInfo info, StreamingContext ctxt) { int i = (int)info.GetValue("testserializer",typeof(int)); called = true; if(i == 3) Console.WriteLine("testserializer deserialized itself correctly"); else Console.WriteLine("testserializer failed to deserialize itself"); } public void GetObjectData(SerializationInfo info, StreamingContext ctxt) { info.AddValue("testserializer",(int)3); called = true; } } public class Stupid { private testserializer testinstance = new testserializer(); public void Run() { testinstance = new testserializer(); Stream s = File.Open("testserializer.dat", FileMode.Create); BinaryFormatter b=new BinaryFormatter(); b.Serialize(s,testinstance); s.Close(); if(testinstance.called) Console.WriteLine("testserializer serialized fine"); else Console.WriteLine("testserializer did not serialize correctly"); //---------------------------------------------------------------------------- testinstance = null; Stream stream = File.Open("testserializer.dat", FileMode.Open); BinaryFormatter bformatter = new BinaryFormatter(); testinstance = (testserializer)bformatter.Deserialize(stream); stream.Close(); if(testinstance.called) Console.WriteLine("testserializer deserialized correctly"); else Console.WriteLine("testserializer did not deserialize correctly"); } } public class TestMain { public static void Main() { Stupid stupid = new Stupid(); stupid.Run(); } } }