5

私が欲しいもの:複雑なデータ型をローミング設定に保存しようとしています。これは私のオブジェクトがどのように見えるかです:

public abstract class Query
{
    [DataMember]
    public Cube Cube { get; private set; }

    [DataMember]
    public List<Filter> Filters { get; private set; }
    [DataMember]

    public Slicer Slicer { get; set; }
}

問題は何ですか:

Query q = ...;
RoamingSettings.Values["query"] = q;

エラーが発生しています:

サポートされていないデータ型

私が試したこと: 複合設定のさまざまなフィールドに Query クラスのさまざまなメンバーを格納します。ただし、Query クラスのデータ メンバーは、やはり異なるクラスのオブジェクトであるため、composite.Values["setting"] に格納できません。

カスタム クラスを使用した Windows 8 アプリ ローミング ストレージを参照してください 。その質問は複合設定を使用して回答されましたが、私のものには当てはまりません。

続行するにはどうすればよいですか?

4

1 に答える 1

0

アンクシュ、

カスタム オブジェクトのコレクションを RoamingSettings に押し込もうとしているように見えますが、これは本来の目的ではありません。ローカル/ローミング設定は通常、レジストリに保存され、単純な名前と値のペアを対象としています。

オブジェクト モデル全体を取り出して、ファイルとして保存するためにフラット化しますか? このようにして、データを簡単にシリアル化/逆シリアル化し、必要に応じてアプリでオブジェクト モデルをハイドレート/デハイドレートできます。また、フラット化されたコンテンツをローミング フォルダーに保存して、複数のユーザー デバイス間で同期することもできます。必要に応じてカスタム オブジェクト プロパティに注釈を付け、DataContractSerializer を使用してデータを平坦化/非平坦化し、XML ファイルをローミング フォルダに保存します。インスタント クラウド同期に依存しないでください。Windows はローミング フォルダ内のファイルを日和見的に同期します。

この MSDN クイックスタートは次のことに役立ちます。

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700362.aspx

ありがとう!

于 2013-02-06T23:20:17.633 に答える