2009-06-10 2 views
1

私はSL3でプリズムを使用してモジュール式のアプリケーションを開発していますが、モジュールの1つは独立したストレージにアプリケーション設定を保持する責任があります(次回にアプリケーションを開くと、 )。依存関係が結ばれている方法が気に入らない点を除いて、完全に動作します。Silverlight用シリアライザライブラリ

私は一般的な店舗を持っているタイプに依存しない設定マネージャを持つようにしたいし、私はこのようないくつかのこと、各モジュールからカスタムデータを追加します。

AppSettings["OpenForEditEmployees"] = new List<EmployeeDTO>(); 
AppSettings["ActiveView"] = ViewsEnum.Report; 

が、私はこの部分を実装し、それを直列化していますxmlへの辞書は私が疑ったよりも難しいことが判明しました。私はDictionary<string, object>をXMLにシリアライズする簡単な方法があるのだろうかと思っていました。

答えて

1

あなたはそれがXMLではないのですが、それは直列化で素晴らしい仕事をしてjson.net http://json.codeplex.com/

を見てきました。

そして、Silverlightでうまくいきます。

2

辞書を使用しているため、通常のXmlSerializerは機能しません。DataContractSerializerを使用してシリアル化できます。

これら2つの静的クラスは、あなたのシリアライズ/デシリアライゼーションのすべての文字列のSilverlightにおけるXMLの表現(および任意の.NET)のために必要扱う

あなたは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); 
} 
関連する問題