Monday, December 22, 2008

Sample code to serialize/deserialize a Dictionary<>

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Microsoft.Test
{
public class Test
{
public static void Main()
{
Dictionary d = new Dictionary();
for (int i = 0; i < 10; i++)
{
d.Add(i, i * 100);
}

// Serialize to xml
FileStream fs = new FileStream(@"c:\d.xml", FileMode.Create);
NetDataContractSerializer nds = new NetDataContractSerializer();
nds.Serialize(fs, d);
fs.Close();

// Serialize to binary
fs = new FileStream(@"c:\d.bin", FileMode.Create);
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, d);
fs.Close();

// Deserialize the binary one.
fs = new FileStream(@"c:\d.bin", FileMode.Open);
Dictionary d2 = (Dictionary) formatter.Deserialize(fs);
foreach (KeyValuePair kvp in d2)
{
Console.WriteLine("{0} - {1}", kvp.Key, kvp.Value);
}
fs.Close();
}
}
}

No comments: