¿Cómo almaceno un objeto de diccionario en mi archivo web.config?

Me gustaría almacenar un diccionario simple de cadena de clave / valor en mi archivo de configuración web. Visual Studio facilita la tarea de almacenar una colección de cadenas (ver el ejemplo a continuación) pero no estoy seguro de cómo hacerlo con una colección de diccionarios.

 value1 value2 value2  

¿Por qué reinventar la rueda? La sección AppSettings está diseñada con el propósito de almacenar datos tipo diccionario en su archivo de configuración.

Si no desea incluir demasiados datos en su sección AppSettings, puede agrupar los valores relacionados en su propia sección de la siguiente manera:

   

Puedes acceder a los elementos de esta colección usando

 using System.Collections.Specialized; using System.Configuration; public string GetName1() { NameValueCollection section = (NameValueCollection)ConfigurationManager.GetSection("MyDictionary"); return section["name1"]; } 

La respuesta de Juliet es .config , pero FYI también puede poner configuraciones adicionales en archivos .config externos, al configurar su web.config siguiente manera:

      

Entonces, su CustomDocTabs.config ve así:

        

Ahora puedes acceder a él en código a través de:

 NameValueCollection DocTabMap = ConfigurationManager.GetSection("DocTabMap") as NameValueCollection; DocTabMap["A"] // == "B" 

Debería implementar una sección personalizada (consulte Diseñador de secciones de configuración ).

Lo que realmente quieres … es algo cercano a esto:

      

Donde XmlAttribute “name” es una clave que no permitirá tener más de una en el código. Al mismo tiempo, asegúrese de que la Colección MyDictionary sea también un Diccionario.

Puede hacer todo esto con esta herramienta y llenar el vacío según sea necesario.

En la configuración de la aplicación podemos usar System.Collection.Specilized.StringCollection

     Element1 Element2     

Acceso a la lista:

 var element = Settings.Default.ElementsList[index] 

No estoy seguro de cómo almacenar un diccionario directamente, pero podría usar fácilmente una matriz de cadenas para almacenar un diccionario. Para cada clave, par de valores, guarda la clave como la primera cadena y el valor como la segunda. Luego, al reconstruir el diccionario, puede deshacer esta encoding.

 static Dictionary ArrayToDictionary(string[] data) { var map = new Dictionary(); for ( var i= 0; i < data.Length; i+=2 ) { map.Add(data[i], data[i+1]); } return map; }