Come archiviare le coppie chiave-valore nelle impostazioni dell'applicazione in fase di esecuzione?

StackOverflow https://stackoverflow.com/questions/179063

  •  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?

È stato utile?

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:

Dizionario generico serializzabile XML

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top