2013-08-23 7 views
7

Non ho ancora trovato una risposta soddisfacente per questo, quindi ho pensato di chiedere. Esistono best practice per l'archiviazione delle impostazioni dell'interfaccia utente in un file?Esiste una procedura ottimale per archiviare le impostazioni dell'interfaccia utente in un file?

Lo scenario è che abbiamo un'app C# interna che voglio memorizzare un array di file/cartelle insieme ad altre cose casuali (flag da usare quando si esegue un comando esterno, argomenti facoltativi da passare ad algoritmi di confronto selezionabili , eccetera). A causa della natura di questi valori, l'utilizzo dei metodi incorporati in app.config non funzionerà. Quindi ci sono buone pratiche quando si memorizzano le impostazioni semi-complesse in un file di impostazione?

Attualmente il più complesso che sto memorizzando sarà un elenco con una singola voce che richiede di memorizzare un nome file, confrontare algoritmo e testo argomento. Quindi non tutti i dati chiave/valore sono semplici.

sto cercando pensieri su:

  • di layout (Es. Se XML, i valori dovrebbero essere negli attributi vs node.value)
  • formato (XML, YAML, ecc)
  • framework

Questo non memorizzerà dati sensibili, quindi la sicurezza non è un problema.

Attualmente sto cercando di utilizzare solo XmlDocument e classi separate per ogni raccolta diversa. Ma sento che ci dovrebbe essere già un quadro esistente per questo.

Grazie!

+0

sento che questo non è un duplicato come le risposte a questa domanda tutti descrivono come si potrebbe memorizzare le impostazioni di WPF e/o la posizione del file. Sto cercando di memorizzare le impostazioni strutturate e le migliori pratiche per questo. –

+0

"Best practice" è un sinonimo di "Qual è la tua opinione su questo?" Che è esattamente fuori tema (perché le risposte opinate creano problemi). –

risposta

2

È anche possibile definire una sezione di configurazione personalizzata e quindi inserire le impostazioni in un file di configurazione separato se non si desidera ingombrare app.config. Un modulo di configurazione personalizzato consente di definire una struttura per le proprie impostazioni complesse e memorizzarle in un file di configurazione standard. Se hai utilizzato Entity Framework, Enterprise Library o simili, probabilmente li hai visti nella parte superiore del file. Una rapida ricerca su Google ha mostrato un altro post StackOverflow sull'argomento.

How to create custom config section in app.config

+0

Stavo pensando a qualcosa in questo senso. Grazie! –

9

Hai ragione che tali impostazioni non devono essere memorizzate nel file app.config. Vi aggiunge solo confusione. In questo caso sarebbe meglio creare un altro file di configurazione come già menzionato nel tuo ticket.

Si sta pianificando di strutturare questo file di configurazione come documento XML. Questa è una grande idea. Ciò significa anche che i dati di configurazione sono strutturati. Anche questo è fantastico.

Ti suggerirei di andare per JSON. Questo ti permetterebbe di caricare le impostazioni di configurazione nella tua applicazione in fase di esecuzione con pochissime righe di codice. Prova NewtonSoft.JSON (aka JSON.Net).

si può seguire questa procedura per aggiungere rapidamente e utilizzare le impostazioni di configurazione:

  1. Installare NewtonSoft.JSON utilizzando Nuget gestore di pacchetti
  2. Aggiungi riferimento a questa libreria per il vostro progetto e Cs file (utilizzando NewtonSoft. Json)
  3. Creare una classe C# per le impostazioni di configurazione. Per i blocchi ripetuti è possibile utilizzare List<string> o qualsiasi altro tipo di dati rilevanti, anche int, quindi non è necessario eseguire alcuna conversione di tipo.
  4. lima Leggi JSON in un oggetto stringa
  5. Uso JsonConvert.DeserializeObject() come:

MyConfigSettings settings = JsonConvert.DeserializeObject<MyConfigSettings>(jsonString);

Ecco MyConfigSettings è la classe impostazioni di configurazione.I membri corrispondenti dovranno essere dichiarati come public proprietà con gli attributi appropriati get; set; definiti.

Questo caricherà tutte le impostazioni di configurazione sull'oggetto settings. La parte migliore è che tutti i valori di configurazione mancanti verranno saltati automaticamente in modo da non dover avere complessi algoritmi di analisi.

Per scrivere i valori di configurazione in un file JSON, è possibile compilare i valori nell'oggetto settings e serializzare utilizzando:

// Indented so that it looks readable when the config file is opened in editor like Notepad 
string data = JsonConvert.SerializeObject<MyConfigSettings>(settings, Formatting.Indented); 
// Now just store string object data to the config file 

Nota: Ciò richiederebbe .Net 4.0+

Un avvio rapido è dato in this example.

+0

Avendo una soluzione pronta all'uso per questo utilizzo della sezione di configurazione, penso che questo sia lontano dalle migliori pratiche. – ivowiblo

+0

Mi piace questa soluzione, ma come menzionato da ivowiblo, avere qualcosa fuori dagli schemi è più ideale. Sento che se non stavo programmando in C#, probabilmente lo implementerei. –

Problemi correlati