(:source lang=C# :)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Foo f = new Foo() { Foobar = 3, Baz = 4 }; Console.WriteLine("F: " + f); string file = Path.GetTempFileName(); Stream s = File.Open(file, FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(s, f); s.Close(); f = null; s = File.Open(file, FileMode.Open); bf = new BinaryFormatter(); f = (Foo)bf.Deserialize(s); s.Close(); Console.WriteLine("F: " + f); } } [Serializable] class Foo : ISerializable { public int Foobar { get; set; } public int Baz { get; set; } public Foo() { } public Foo(SerializationInfo info, StreamingContext ctxt) { this.Foobar = (int)info.GetValue("Foobar", typeof(int)); this.Baz = (int)info.GetValue("Baz", typeof(int)); } public void GetObjectData(SerializationInfo info, StreamingContext ctxt) { info.AddValue("Foobar", this.Foobar); info.AddValue("Baz", this.Baz); } public override string ToString() { return "Foobar: " + this.Foobar + "; Baz: " + this.Baz; } } }