Dictionary を使用しているため、通常の XmlSerializer は機能しません。DataContractSerializer を使用してシリアル化できます。
これら 2 つの静的クラスは、Silverlight (および任意の .NET) での xml の文字列表現に対するシリアライゼーション/デシリアライゼーションのすべてのニーズを処理します。
DataContractSerializer の System.Runtime.Serialization への参照が必要になります。
public static void SerializeXml<T>(T obj, Stream strm)
{
DataContractSerializer ser = new DataContractSerializer(typeof(T));
ser.WriteObject(strm, obj);
}
public static T DeserializeXml<T>(Stream xml)
{
DataContractSerializer ser = new DataContractSerializer(typeof(T));
return (T)ser.ReadObject(xml);
}
JSON を使用したい場合は、System.ServiceModel.Web アセンブリへの参照を追加して、代わりにこのバージョンを使用できます。
public static void SerializeJson<T>(T obj, Stream strm)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
ser.WriteObject(strm, obj);
}
public static T DeserializeJson<T>(Stream json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
return (T)ser.ReadObject(json);
}