2011-12-23 14 views
9

Utilizo la configuración incorporada proporcionada por Visual Studio para almacenar configuraciones simples de la aplicación. Hasta ahora, he accedido a esta en mi solicitud mediante el uso de la convención:usando Propiedades.Configuraciones para la configuración de la aplicación

Properties.Settings.Default.MySetting 

y luego llamar a métodos como Save mediante el uso de:

Properties.Settings.Default.Save() 

Sin embargo, alguien me dijo recientemente que es más correcto acceder a las propiedades mediante la creación de una variable miembro de la siguiente manera:

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

y a continuación, utilizando el miembro settings acceder a propiedades y métodos como:

settings.MySetting 
settings.Save() 

Recuerdo vagamente que justifican esta describiendo las diferencias en la forma en que los ajustes se almacenan en el área de usuario.

¿Alguien puede confirmar u ofrecer más detalles sobre las diferencias? Muchas gracias.

Respuesta

10

Settings.Default se inicializa como sigue:

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

lo que es casi el mismo que crear manualmente una instancia de Settings, excepto que el proporcionado por Settings.Default es una instancia sincronizada. No veo ninguna buena razón para crear una instancia de Settings manualmente ...

4

Esto ha perdido mucho de mi tiempo.

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

No sé cuando se puede soltar el espacio de nombres que el anterior pero en WPF en el código App.xaml.cs que necesitaba para especificar el espacio de nombres para que se compile.

+1

¡Gracias, gracias! ¡Esto me ahorró tanto tiempo! ¡Es curioso cómo soy el primero que esto me ayudó después de 2,5 años! Esto funcionó en app.xaml.cs – mdiehl13

+0

¡Me salvó también! Funcionó sin el espacio de nombres hasta que lo moví a App.xaml.cs, luego obtuve "el inicializador de campo no puede hacer referencia al campo no estático". Parece que hay un miembro 'Properties' en la clase' Application' con el que era ambiguo. – Vimes

Cuestiones relacionadas