2012-06-12 8 views
6

Ho alcune proprietà memorizzate nel mio AppConfig e ora voglio accedervi in ​​modo dinamico (ad es. In un ciclo o funzione).Ottieni proprietà dinamiche da Impostazioni

L'accesso ai valori tramite MySettings.NAME_OF_THAT_THING non è un problema, ma cosa succede se il nome è variabile?

ho provato:

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

Ma l'unica cosa che ho ottenuto di nuovo è il nome della proprietà. Come posso fare questo?

+0

Qual è il tipo di MySettings? Non implementa iDictionary o qualcosa del genere? Mi sarei aspettato che tu fossi in grado di fare 'MySettings (" NAME_OF_THING ")' ... – Chris

+0

Application.Properties.Settings – user1450661

risposta

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, questo l'ha risolto! Grazie mille. =) – user1450661

0

Hai provato a utilizzare lo ConfigurationManager.AppSettings property? Si dovrebbe essere in grado di ottenere le impostazioni tramite il seguente codice:

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

L'articolo di MSDN per ConfigurationManager.AppSettings comprende anche un esempio per il collegamento in cascata tutte le voci in AppSettings per indice, invece di nome.

+0

Le impostazioni a cui fa riferimento l'OP non sono memorizzate nell'elemento appSettings del file di configurazione, vengono memorizzate utilizzando una struttura più complessa sotto l'elemento applicationSettings. –

8

Tutto quello che dovete fare è:

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

Durante l'utilizzo di riflessione ovviamente lavoro, è eccessivo.

+0

Non ho "MySettings.Default": (nessun metodo Predefinito in questo contesto) – user1450661

+0

Interessante. È un'applicazione WinForm? Forse aggiunge solo quella proprietà se si tratta di un'applicazione WinForm ... –

+0

@ user1450661 Provalo ora. Ho confuso Impostazioni e MySettings. –

0

risposta alla domanda manifesto originale sarebbe come: MySettings [NAME_OF_THAT_THINGmysettings] fa il lavoro come post precedente

tuttavia per quelle persone in cerca di risposta utilizzando le impostazioni incorporate nella loro finestre app: myAppDefaultNameSpace.Properties .Settings.Default [NAME_OF_THAT_THINGmysettings] è la strada da percorrere