using System; using System.IO; using System.Collections; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Soap; [Serializable] public class MyElement { public MyElement(string name) { this.name = name; this.cacheValue = 15; } public override string ToString() { return(String.Format("{0}: {1}", name, cacheValue)); } string name; [NonSerialized] int cacheValue; } [Serializable] public class MyElementList { public void Add(MyElement my) { row.Add(my); } public override string ToString() { string temp = null; foreach (MyElement my in row) temp += my.ToString() + "\n"; return(temp); } ArrayList row = new ArrayList(); } class MainClass { public static void Main() { MyElementList row = new MyElementList(); row.Add(new MyElement("Gumby")); row.Add(new MyElement("Pokey")); Console.WriteLine("Initial value"); Console.WriteLine("{0}", row); // write to SOAP (XML), read it back Stream streamWrite = File.Create("MyElementList.xml"); SoapFormatter soapWrite = new SoapFormatter(); soapWrite.Serialize(streamWrite, row); streamWrite.Close(); Stream streamRead = File.OpenRead("MyElementList.xml"); SoapFormatter soapRead = new SoapFormatter(); MyElementList rowSoap = (MyElementList) soapRead.Deserialize(streamRead); streamRead.Close(); Console.WriteLine("Values after SOAP serialization"); Console.WriteLine("{0}", rowSoap); } }
Initial value Gumby: 15 Pokey: 15 Values after SOAP serialization Gumby: 0 Pokey: 0