2013-07-15 1 views
0

J'ai un dictionnaire statique que j'ai besoin d'utiliser dans mon programme. Je l'ai chargé dans un dictionnaire et je me demandais comment et où le stocker afin que je puisse accéder à ses valeurs plus tard le plus facilement possible . Je me demandais d'en faire un fichier xml avec une paire clé-> value mais je ne sais pas exactement comment l'enregistrer et le formater plus tard je peux l'appeler comme je peux appeler mes clés et valeurs appSettings (en utilisant LINQ). J'ai juste besoin de l'avoir stocké quelque part, en tant que ressource pourquoi pas, et chaque fois que j'ai besoin d'une valeur particulière pour une clé, il ne faut pas plus d'une ligne de code pour obtenir sa valeur.Où stocker mon dictionnaire

+0

Cela pourrait aider: http://stackoverflow.com/a/1799792/1303986 – computer10171

+0

Cela devrait également vous aider: http://stackoverflow.com/a/1710942/1303986 – computer10171

+0

Voilà comment je great.BUt Je peux l'utiliser à partir de maintenant? Je veux le stocker quelque part dans mon projet et y accéder quand je veux? – user2128702

Répondre

0

Vous pouvez utiliser LINQ2XML pour créer deux méthodes d'écriture et de lecture de l'objet Dictionary.

Stockage du dictionnaire (extension/changement pour vos types) dans un fichier:

private void storeXml(string location, Dictionary<int, string> data) 
{ 
    var xml = new XElement("storage", 
        data.Select(kv => new XElement("entry", 
           new XElement("key", kv.Key), 
           new XElement("value", kv.Value)))); 
    xml.Save(location); 
} 

données lues à partir d'un fichier et remplir l'objet dictionnaire:

private Dictionary<int, string> readXml(string location) 
{ 
    var data = new Dictionary<int, string>(); 

    var xml = XDocument.Load(location); 
    foreach(var element in xml.Descendants("entry").ToList()) 
    { 
     var key = int.Parse(element.Element("key").Value); 
     var value = element.Element("value").Value; 
     data.Add(key, value); 
    } 

    return data; 
} 

Le code peut être utilisé comme ceci:

var data = new Dictionary<int, string>(); 
data.Add(1, "one"); 
data.Add(2, "two"); 
data.Add(3, "three"); 
data.Add(4, "four"); 

var fileLocation = @"d:\temp\dictionary.xml"; 

storeXml(fileLocation, data); 

var d = readXml(fileLocation); 

Le fichier XML ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<storage> 
    <entry> 
     <key>1</key> 
     <value>one</value> 
    </entry> 
    <entry> 
     <key>2</key> 
     <value>two</value> 
    </entry> 
    <entry> 
     <key>3</key> 
     <value>three</value> 
    </entry> 
    <entry> 
     <key>4</key> 
     <value>four</value> 
    </entry> 
</storage> 
Questions connexes