2012-05-02 17 views
21

Vorrei archiviare un array di stringhe monodimensionale come voce nel mio appSettings. Non posso semplicemente separare gli elementi con , o | perché gli elementi stessi potrebbero contenere quei caratteri.Archiviazione stringa archivio in appSettings?

Stavo pensando di memorizzare l'array come JSON, quindi deserializzare utilizzando lo JavaScriptSerializer.

Esiste un modo "giusto"/migliore per farlo?

(La mia idea JSON sente un po hacky)

+1

Raccomando il materiale Newton JSON, se si va su quella strada ... –

risposta

20

è possibile utilizzare l'AppSettings con un System.Collections.Specialized.StringCollection.

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

Ogni valore è separato da una nuova riga.

Ecco uno screenshot (IDE tedesco, ma che potrebbe essere utile in ogni caso)

enter image description here

+0

Può essere usato per numeri interi? – akd

+0

@akdurmus: solo se li si converte in int: 'int [] ints = new int [strings.Count]; for (int i = 0; i

+0

Mi sembra di trovare una risposta migliore e pubblicata di seguito. Grazie @Tim – akd

5

Si può anche considerare l'utilizzo di sezione di configurazione personalizzata/Collection per questo scopo. Ecco un esempio:

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

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

È inoltre possibile controllare in questo eccellente Visual Studio add-in che permette di progettare graficamente sezioni di configurazione .NET e genera tutto il codice necessario e una definizione di schema (XSD) per loro automaticamente.

9

Per i numeri interi ho trovato il seguente modo più veloce.

Prima di tutto creare una chiave appSettings con valori interi separati da virgole nell'app.config.

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

Poi dividere e convertire i valori in int array utilizzando LINQ

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

Per le stringhe è facile, basta aggiungere quanto segue al web.config del file:

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

e poi è possibile recuperare il valore in una matrice come segue:

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

Intendevi '[...]' attorno a '" MyStringArray "', non '(...)', o mi manca qualcosa? – WAF

+0

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

Problemi correlati