Come posso archiviare un object dizionario nel mio file web.config?

Mi piacerebbe memorizzare un semplice dizionario stringa chiave / valore nel mio file di configurazione web. Visual Studio semplifica l’archiviazione di una raccolta di stringhe (vedi esempio sotto) ma non sono sicuro di come farlo con una raccolta di dizionari.

 value1 value2 value2  

Perché reinventare la ruota? La sezione AppSettings è progettata esattamente allo scopo di memorizzare dati simili a un dizionario nel tuo file di configurazione.

Se non vuoi mettere troppi dati nella tua sezione AppSettings, puoi raggruppare i tuoi valori correlati nella loro sezione come segue:

   

Puoi accedere agli elementi di questa raccolta usando

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

La risposta di Juliet è giusta, ma FYI puoi anche aggiungere ulteriori .config file .config esterni, impostando il tuo web.config come segue:

      

Quindi, il tuo CustomDocTabs.config il CustomDocTabs.config aspetto:

        

Ora puoi accedervi in ​​codice tramite:

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

Dovresti implementare una sezione personalizzata (vedi Designer sezione di configurazione ).

Quello che vuoi veramente … è qualcosa di simile a questo:

      

Dove il “nome” XmlAttribute è una chiave che non permetterà di avere più di uno nel codice dietro. Allo stesso tempo, assicurati che la raccolta MyDictionary sia anche un dizionario.

Puoi fare tutto questo con questo strumento e riempire il vuoto quando necessario.

Nelle impostazioni dell’applicazione possiamo usare System.Collection.Specilized.StringCollection

     Element1 Element2     

Accesso alla lista:

 var element = Settings.Default.ElementsList[index] 

Non sono sicuro di come memorizzare un dizionario direttamente ma potresti facilmente utilizzare una serie di stringhe per memorizzare un dizionario. Per ogni coppia chiave, valore si salva la chiave come prima stringa e il valore come seconda. Quindi, quando si ricostruisce il dizionario, è ansible annullare questa codifica.

 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; }