Come archiviare le coppie chiave-valore nelle impostazioni dell'applicazione in fase di esecuzione?
-
05-07-2019 - |
Domanda
In che modo è possibile archiviare in app.config coppie dinamiche di valori-chiave nell'uso delle API dell'applicazione, in fase di esecuzione?
Ho cercato di farmi girare la testa e non riesco a trovare alcun esempio o documentazione significativa.
Sembra che le classi del dizionario .Net non possano essere serializzate in XML per memorizzarle in app.config
È l'unico modo per farlo utilizzando classi serializzate XML personalizzate o ci sono altri modi?
Soluzione 2
Dopo qualche altra ricerca in rete, ho trovato un ottimo articolo (anche se molto lungo) che descrive in profondità il modello di configurazione .Net:
Svelare i misteri della configurazione di .NET 2.0
Ho anche trovato qualcosa di molto utile:
Designer della sezione di configurazione
Uno studio visivo che aggiunge per la progettazione visiva di sezioni di configurazione e la generazione dei file XSD corrispondenti. Spero che qualcuno lo trovi utile.
Altri suggerimenti
Dovresti essere in grado di fare qualcosa del genere:
// Open App.Config of executable
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting with a name Key and a Value stored in variable called Value
config.AppSettings.Settings.Add("Key", Value );
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
Ho sempre pensato che fosse considerato una cattiva pratica cambiare app.config durante il runtime. App.config dovrebbe essere usato per l'installazione e la configurazione del programma; non per cose dinamiche che l'applicazione sta effettivamente modificando.
Suggerisci di creare " KeyValue.xml " file per oggetti dinamici.
A seconda di cosa esattamente hai bisogno, puoi provare System.Collections.ObjectModel.KeyedCollection < TKey, TValue > ;. Funziona solo se puoi ricavare la chiave di un oggetto dall'oggetto stesso, ma in tal caso, va bene per questo scopo.
È un dizionario generico? In tal caso: