2011-12-23 21 views
9

Uso le impostazioni predefinite fornite da Visual Studio per memorizzare le impostazioni dell'applicazione semplice. Fino ad ora, ho accesso a questo nella mia applicazione utilizzando la convenzione:utilizzando Proprietà. Impostazioni per le impostazioni dell'applicazione

Properties.Settings.Default.MySetting 

e quindi chiamare metodi come Save utilizzando:

Properties.Settings.Default.Save() 

Tuttavia, qualcuno recentemente mi ha detto che è più corretto per accedere alle proprietà creando una variabile membro simili:

private Properties.Settings settings = new Properties.Settings() 

e quindi utilizzando l'elemento settings per accedere alle proprietà e metodi come:

settings.MySetting 
settings.Save() 

Ricordo vagamente che giustificavano questo descrivendo le differenze nel modo in cui le impostazioni vengono memorizzate nella zona dell'utente.

Qualcuno può confermare o fornire ulteriori dettagli sulle differenze? Grazie molto.

risposta

10

Settings.Default viene inizializzata come segue:

private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 

quindi è quasi lo stesso come creare manualmente un'istanza di Settings, tranne che quello fornito da Settings.Default è un'istanza sincronizzato. Non riesco a vedere alcun buon motivo per creare manualmente un'istanza di Settings ...

4

Questo ha sprecato molto del mio tempo.

[MyAppNameSpace].Properties.Settings.Default.Save(); 

Non so quando è possibile rilasciare lo spazio dei nomi come sopra, ma in WPF nel codice app.xaml.cs avevo bisogno di specificare lo spazio dei nomi per farlo compilare.

+1

Grazie grazie! Questo mi ha salvato così tanto tempo! Divertente come sono il primo che questo ha aiutato dopo 2,5 anni! Questo ha funzionato in app.xaml.cs – mdiehl13

+0

Salvato anche me! Ha funzionato senza lo spazio dei nomi fino a quando non l'ho spostato su App.xaml.cs, quindi ho ottenuto che "l'inizializzatore del campo non può fare riferimento al campo non statico". Sembra che ci sia un membro 'Properties' nella classe' Application' con cui era ambiguo. – Vimes

Problemi correlati