2012-05-02 30 views
21

Me gustaría almacenar una matriz de cadenas unidimensional como una entrada en mi appSettings. No puedo simplemente separar elementos con , o | porque los elementos mismos podrían contener esos caracteres.Tienda String Array ¿En la configuración de la aplicación?

Estaba pensando en almacenar la matriz como JSON y luego deserializarla usando JavaScriptSerializer.

¿Existe una forma "correcta"/mejor para hacer esto?

(Mi idea JSON siente un poco hacky)

+1

Recomiendo las cosas de Newtonsoft JSON, si vas por esa ruta ... –

Respuesta

20

podría utilizar el AppSettings con un System.Collections.Specialized.StringCollection.

var myStringCollection = Properties.Settings.Default.MyCollection; 
foreach (String value in myCollection) 
{ 
    // do something 
} 

Cada valor está separado por una nueva línea.

Aquí hay una captura de pantalla (IDE alemán pero podría ser útil de todos modos)

enter image description here

+0

¿Se puede usar esto para números enteros? – akd

+0

@akdurmus: solo si los convierte a int: 'int [] ints = new int [strings.Count]; for (int i = 0; i

+0

Parece que encontré una mejor respuesta y la publico a continuación. Gracias @Tim – akd

5

También puede considerar el uso de la sección de configuración/Colección para este propósito. Este es un ejemplo:

<configSections> 
    <section name="configSection" type="YourApp.ConfigSection, YourApp"/> 
</configSections> 

<configSection xmlns="urn:YourApp"> 
    <stringItems> 
    <item value="String Value"/> 
    </stringItems> 
</configSection> 

También puede comprobar en este excelente Visual Studio add-in que le permite diseñar gráficamente las secciones de configuración .NET y automáticamente genera todo el código requerido y una definición de esquema (XSD) para ellos.

9

Para enteros encontré la siguiente manera más rápido.

Antes que nada crea una clave appSettings con valores enteros separados por comas en tu app.config.

<add key="myIntArray" value="1,2,3,4" /> 

A continuación, dividir y convertir los valores en una matriz int utilizando LINQ

int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray(); 
4

Para las cadenas es fácil, sólo tiene que añadir lo siguiente a su web.config archivo:

<add key="myStringArray" value="fred,Jim,Alan" /> 

y luego puede recuperar el valor en una matriz de la siguiente manera:

myArray = ConfigurationManager.AppSettings("myStringArray").Split(",") 
+0

¿Querías decir '[...]' around '" MyStringArray "', no '(...)', o me estoy perdiendo algo? – WAF

+0

Debe ser 'var myArray = ConfigurationManager.AppSettings [" MyStringArray "]. Split (',');' – dev

Cuestiones relacionadas