2013-02-06 4 views
5

Cosa voglio: Sto tentando di memorizzare tipi di dati complessi nelle impostazioni di roaming. Ecco come il mio oggetto assomiglia:memorizzazione di tipi di dati complessi nelle impostazioni di roaming

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; } 
} 

Qual è il problema:

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

sta dando un errore:

Data type not supported

Quello che ho cercato: memorizzazione diversa membri della classe Query in diversi campi delle impostazioni composite. Ma i membri dati della classe Query sono di nuovo oggetti di classi diverse e quindi non possono essere memorizzati in composite.Values ​​["setting"].

Consultare: windows 8 app roaming storage with custom class. A questa domanda è stata data risposta usando l'impostazione composita ma non è applicabile al mio.

Come procedere?

risposta

0

Ankush,

Sembra che si sta tentando di spingere una collezione di oggetti personalizzati in RoamingSettings, che non è proprio quello che si intende per. Le impostazioni locali/di roaming sono memorizzate di solito nel registro e sono pensate per semplici coppie nome-valore.

Che ne dici di questo - si prende l'intero modello di oggetto e lo si appiattisce per l'archiviazione come file? In questo modo, puoi facilmente serializzare/deserializzare i tuoi dati e idratare/disidratare il tuo modello di oggetto nella tua App quando necessario. Inoltre, il contenuto appiattito può essere salvato nella cartella roaming per la sincronizzazione su più dispositivi utente. Annota semplicemente le proprietà dell'oggetto personalizzato secondo necessità e utilizza DataContractSerializer per appiattire/svincolare i dati e mantenere un file XML nella cartella di roaming. Basta non dipendere da una sincronizzazione istantanea del cloud; Windows sincronizzerà opportunisticamente il file nella cartella di roaming.

Questo QuickStart MSDN dovrebbe aiutare:

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

Grazie!