Sla*_*uma 30 .net xml list xml-serialization
我有一个键/值对列表,我想存储和从XML文件中检索.所以此任务与此处描述的类似.我试图遵循标记答案中的建议(使用KeyValuePair和XmlSerializer),但我没有得到它的工作.
到目前为止,我所拥有的是"设置"课程......
public class Settings
{
public int simpleValue;
public List<KeyValuePair<string, int>> list;
}
Run Code Online (Sandbox Code Playgroud)
......这个班的一个例子......
Settings aSettings = new Settings();
aSettings.simpleValue = 2;
aSettings.list = new List<KeyValuePair<string, int>>();
aSettings.list.Add(new KeyValuePair<string, int>("m1", 1));
aSettings.list.Add(new KeyValuePair<string, int>("m2", 2));
Run Code Online (Sandbox Code Playgroud)
...以及将该实例写入XML文件的以下代码:
XmlSerializer serializer = new XmlSerializer(typeof(Settings));
TextWriter writer = new StreamWriter("c:\\testfile.xml");
serializer.Serialize(writer, aSettings);
writer.Close();
Run Code Online (Sandbox Code Playgroud)
生成的文件是:
<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<simpleValue>2</simpleValue>
<list>
<KeyValuePairOfStringInt32 />
<KeyValuePairOfStringInt32 />
</list>
</Settings>
Run Code Online (Sandbox Code Playgroud)
因此,虽然元素的数量是正确的,但是我的列表中的对的键和值都没有存储.显然我做的事情基本上是错的.我的问题是:
Pet*_*hev 56
KeyValuePair不可序列化,因为它具有只读属性.以下是更多信息(感谢Thomas Levesque).要更改生成的名称,请使用该[XmlType]属性.
像这样定义你自己:
[Serializable]
[XmlType(TypeName="WhateverNameYouLike")]
public struct KeyValuePair<K, V>
{
public K Key
{ get; set; }
public V Value
{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33422 次 |
| 最近记录: |