using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Soap; using System.Xml.Serialization; using System.Collections; [Serializable] public class Radio { public bool hasTweeters; public bool hasSubWoofers; public double[] stationPresets; [NonSerialized] public string radioID = "002"; } [Serializable] public class Car { public Radio theRadio = new Radio(); public bool isHatchBack; } [Serializable, XmlRoot(Namespace = "http://www.yoursite.com")] public class MyCar : Car { public MyCar(bool SkyWorthy, bool SeaWorthy) { canFly = SkyWorthy; canSubmerge = SeaWorthy; } public MyCar() { } [XmlAttribute] public bool canFly; [XmlAttribute] public bool canSubmerge; } class Program { static void Main(string[] args) { MyCar jbc = new MyCar(); jbc.canFly = true; jbc.canSubmerge = false; jbc.theRadio.stationPresets = new double[] { 89.3, 105.1, 97.1 }; jbc.theRadio.hasTweeters = true; BinaryFormatter binFormat = new BinaryFormatter(); Stream fStream = new FileStream("CarData.dat",FileMode.Create, FileAccess.Write, FileShare.None); binFormat.Serialize(fStream, jbc); fStream.Close(); fStream = File.OpenRead("CarData.dat"); MyCar carFromDisk =(MyCar)binFormat.Deserialize(fStream); fStream.Close(); SoapFormatter soapForamt = new SoapFormatter(); fStream = new FileStream("CarData.soap",FileMode.Create, FileAccess.Write, FileShare.None); soapForamt.Serialize(fStream, jbc); fStream.Close(); XmlSerializer xmlForamt = new XmlSerializer(typeof(MyCar),new Type[] { typeof(Radio), typeof(Car) }); fStream = new FileStream("CarData.xml",FileMode.Create, FileAccess.Write, FileShare.None); xmlForamt.Serialize(fStream, jbc); fStream.Close(); ArrayList myCars = new ArrayList(); myCars.Add(new MyCar(true, true)); myCars.Add(new MyCar(true, false)); myCars.Add(new MyCar(false, true)); myCars.Add(new MyCar(false, false)); fStream = new FileStream("CarCollection.xml",FileMode.Create, FileAccess.Write, FileShare.None); xmlForamt = new XmlSerializer(typeof(ArrayList),new Type[] { typeof(MyCar), typeof(Car), typeof(Radio) }); xmlForamt.Serialize(fStream, myCars); fStream.Close(); } }