我有一个静态字典,我需要在我的程序中使用它。我将它加载到字典中,我想知道如何以及在哪里存储它,以便以后可以以最简单的方式访问它的值。
我想知道用键-> 值对制作它的 xml 文件,但我不知道如何保存和格式化它,所以稍后我可以调用它的方式,我可以调用我的 appSettings 键和值(使用 LINQ) .
我只需要将它作为资源存储在某个地方,为什么不呢?每次我需要一个特定的键值时,只需一行代码即可获得它的值。
我有一个静态字典,我需要在我的程序中使用它。我将它加载到字典中,我想知道如何以及在哪里存储它,以便以后可以以最简单的方式访问它的值。
我想知道用键-> 值对制作它的 xml 文件,但我不知道如何保存和格式化它,所以稍后我可以调用它的方式,我可以调用我的 appSettings 键和值(使用 LINQ) .
我只需要将它作为资源存储在某个地方,为什么不呢?每次我需要一个特定的键值时,只需一行代码即可获得它的值。
您可以使用 LINQ2XML 创建两种方法来写入和读取 Dictionary 对象。
将字典(扩展/更改您的类型)存储到文件中:
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);
}
从文件中读取数据并填充字典对象:
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;
}
代码可以这样使用:
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);
XML 文件如下所示:
<?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>