¿Cómo almacenar pares clave-valor en la configuración de la aplicación en tiempo de ejecución?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

¿Cómo se pueden almacenar pares dinámicos de valores clave-clave en app.config al usar la API de configuración de la aplicación, en tiempo de ejecución?

He estado tratando de entender, y no puedo encontrar ningún ejemplo o documentación significativa.

Parece que las clases de diccionario .Net no se pueden serializar en XML para almacenarlas en app.config

¿Es la única forma de hacerlo usando clases serializadas XML personalizadas, o hay alguna otra forma?

¿Fue útil?

Solución 2

Después de buscar más en la red, encontré un artículo muy bueno (aunque muy largo) que describe en profundidad el modelo de configuración .Net:

Desentrañando los misterios de la configuración de .NET 2.0

También encontré algo muy útil:

Diseñador de la sección de configuración

Un estudio visual que se agrega para diseñar visualmente las secciones de configuración y generar los archivos XSD correspondientes. Espero que alguien encuentre esto útil.

Otros consejos

Deberías poder hacer algo como esto:

// 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);

Siempre pensé que se consideraba una mala práctica cambiar app.config durante el tiempo de ejecución. La app.config se debe usar para la instalación y configuración del programa; no para cosas dinámicas que la aplicación está modificando realmente.

Sugiero que cree por separado " KeyValue.xml " archivo para objetos dinámicos.

Dependiendo de lo que necesite exactamente, puede probar System.Collections.ObjectModel.KeyedCollection < TKey, TValue > ;. Esto solo funciona si puede derivar la clave de un elemento del propio elemento, pero en ese caso, está bien para este propósito.

¿Es un diccionario genérico? Si es así:

Diccionario genérico serializable XML

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top