1 using System;
2 using System.IO;
3 using System.Collections;
4 using System.Runtime.Serialization.Formatters.Binary;
5 using System.Runtime.Serialization;
6
7 public class App
8 {
9 [STAThread]
10 static void Main()
11 {
12 Serialize();
13 Deserialize();
14 }
15
16 static void Serialize()
17 {
18 // Create a hashtable of values that will eventually be serialized.
19 Hashtable addresses = new Hashtable();
20 addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052");
21 addresses.Add("Fred", "987 Pine Road, Phila., PA 19116");
22 addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301");
23
24 // To serialize the hashtable and its key/value pairs,
25 // you must first open a stream for writing.
26 // In this case, use a file stream.
27 FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
28
29 // Construct a BinaryFormatter and use it to serialize the data to the stream.
30 BinaryFormatter formatter = new BinaryFormatter();
31 try
32 {
33 formatter.Serialize(fs, addresses);
34 }
35 catch (SerializationException e)
36 {
37 Console.WriteLine("Failed to serialize. Reason: " + e.Message);
38 throw;
39 }
40 finally
41 {
42 fs.Close();
43 }
44 }
45
46
47 static void Deserialize()
48 {
49 // Declare the hashtable reference.
50 Hashtable addresses = null;
51
52 // Open the file containing the data that you want to deserialize.
53 FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
54 try
55 {
56 BinaryFormatter formatter = new BinaryFormatter();
57
58 // Deserialize the hashtable from the file and
59 // assign the reference to the local variable.
60 addresses = (Hashtable) formatter.Deserialize(fs);
61 }
62 catch (SerializationException e)
63 {
64 Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
65 throw;
66 }
67 finally
68 {
69 fs.Close();
70 }
71
72 // To prove that the table deserialized correctly,
73 // display the key/value pairs.
74 foreach (DictionaryEntry de in addresses)
75 {
76 Console.WriteLine("{0} lives at {1}.", de.Key, de.Value);
77 }
78 }
79 }