2012-06-12 20 views
6

Tengo algunas propiedades almacenadas en mi AppConfig y ahora quiero acceder a ellas dinámicamente (por ejemplo, en un bucle o función).Obtener propiedad dinámica de la configuración

Acceder a los valores utilizando MySettings.NAME_OF_THAT_THING no es un problema, pero ¿y si el nombre es variable?

me trataron:

String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString(); 

Pero lo único que llegué es el nombre de la propiedad. ¿Cómo puedo hacer esto?

+0

¿Cuál es el tipo de MySettings? ¿No implementa iDictionary o algo así? Esperaba que pudieras hacer 'MySettings (" NAME_OF_THING ")' ... – Chris

+0

Application.Properties.Settings – user1450661

Respuesta

5
String propertyValue = MySettings.GetType() 
.GetProperty("NAME_OF_THAT_THING") 
.GetValue(MySettings, null); //replace MySettings with null in GetValue(...) if MySettings is a static class 
+0

¡Yay, eso lo resolvió! Muchas gracias. =) – user1450661

0

¿Has probado a usar el ConfigurationManager.AppSettings property? Usted debe ser capaz de obtener su ajuste a través del siguiente código:

String propertyValue = ConfigurationManager.AppSettings["NAME_OF_THAT_THING"]; 

El artículo de MSDN para ConfigurationManager.AppSettings también incluye un ejemplo de bucle a través de todas las entradas en AppSettings mediante un índice, en lugar del nombre.

+0

Las configuraciones a las que hace referencia el OP no se almacenan en el elemento appSettings del archivo de configuración, sino que se almacenan utilizando una estructura más compleja en el elemento applicationSettings. –

8

Todo lo que necesita hacer es:

String propertyValue = Settings.Default["NAME_OF_THAT_THING"].ToString(); 

Durante el uso de la reflexión, obviamente, va a funcionar, es una exageración.

+0

No tengo "MySettings.Default": (no hay método predeterminado en este contexto) – user1450661

+0

Interesante. ¿Es una aplicación WinForm? Tal vez solo agregue esa propiedad si se trata de una aplicación WinForm ... –

+0

@ user1450661 Pruébelo ahora. Mezclé la configuración y MySettings. –

0

respuesta a la pregunta original del cartel sería como: MySettings [] NAME_OF_THAT_THINGmysettings hace el trabajo como post anterior

sin embargo, para aquellas personas que buscan respuesta a utilizar la configuración incorporadas en su aplicación de Windows: myAppDefaultNameSpace.Properties .Configuración.Default [NAME_OF_THAT_THINGmysettings] es el camino a seguir

Cuestiones relacionadas