Mega Code Archive

 
Categories / C# / File Stream
 

Serialize hiearchy classes

using System;   using System.IO;   using System.Runtime.Serialization.Formatters.Binary;   using System.Runtime.Serialization.Formatters.Soap;        public class RoomApp     {     public static void Main()     {       // Make a room and listen to the tunes.       Console.WriteLine("Made a My Room...");       MyRoom myAuto = new MyRoom("My", 50, false, true);       myAuto.TurnOnRadio(true);       myAuto.GoUnderWater();       // Now save this room to a binary stream.       FileStream myStream = File.Create("RoomData.dat");       BinaryFormatter myBinaryFormat = new BinaryFormatter();       myBinaryFormat.Serialize(myStream, myAuto);       myStream.Close();       Console.WriteLine("Saved room to roomdata.dat.");       // Read in the Room from the binary stream.       Console.WriteLine("Reading room from binary file.");       myStream = File.OpenRead("RoomData.dat");       MyRoom roomFromDisk = (MyRoom)myBinaryFormat.Deserialize(myStream);       Console.WriteLine(roomFromDisk.PetName + " is alive!");       roomFromDisk.TurnOnRadio(true);       myStream.Close();            }     }           [Serializable]     public class Radio     {     [NonSerialized]     private int objectIDNumber = 9;         public Radio(){}     public void On(bool state)     {       if(state == true)         Console.WriteLine("Music is on...");       else         Console.WriteLine("No tunes...");             }     }   [Serializable]     public class Room     {     protected string petName;     protected int maxInternetSpeed;     protected Radio theRadio = new Radio();         public Room(string petName, int maxInternetSpeed)         {       this.petName = petName;       this.maxInternetSpeed = maxInternetSpeed;         }     public Room() {}     public String PetName     {       get { return petName; }       set { petName = value; }     }     public int MaxInternetSpeed     {       get { return maxInternetSpeed; }       set { maxInternetSpeed = value; }     }     public void TurnOnRadio(bool state)     {       theRadio.On(state);     }     }   [Serializable]     public class MyRoom : Room     {     protected bool isFlightWorthy;     protected bool isSeaWorthy;     public MyRoom(string petName, int maxInternetSpeed,                bool canFly, bool canSubmerge)       : base(petName, maxInternetSpeed)         {       this.isFlightWorthy = canFly;       this.isSeaWorthy = canSubmerge;     }     public MyRoom(){}     public void Fly()     {       if(isFlightWorthy)         Console.WriteLine("Taking off!");       else         Console.WriteLine("Falling off cliff!");     }     public void GoUnderWater()     {       if(isSeaWorthy)         Console.WriteLine("Diving....");       else         Console.WriteLine("Drowning!!!");           }     }