反序列化 KeyValuePairs 列表

Pau*_*aul 5 c# xml-serialization

我有以下格式的一些 XML:

<ObjectData>
  <ModelName>MODEL_123</ModelName>
  <ObjectName>OBJECT_A</ObjectName>
  <Values>
    <KeyValuePair>
      <Key>NAME</Key>
      <Value>PAUL</Value>
    </KeyValuePair>
    ...
  </Values>
</ObjectData>
...
Run Code Online (Sandbox Code Playgroud)

我想将其反序列化为以下类:

[XmlRoot(Namespace = "")]
public class ObjectData
{
    [XmlElement(Namespace = "")]
    public string ModelName { get; set; }
    [XmlElement(Namespace = "")]
    public string ObjectName { get; set; }
    [XmlArray]
    public List<KeyValuePair<string, string>> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我使用此代码时,KeyValuePairs 未反序列化并且 Values 属性为空。

List<ObjectData> data = new List<ObjectData>();
XmlSerializer serializer = new XmlSerializer(typeof(ObjectData));

using (XmlReader reader = XmlReader.Create(new StringReader(inputXML)))
{             
    reader.MoveToContent();
    ObjectData temp = (ObjectData)serializer.Deserialize(reader);
    data.Add(temp);
}  
Run Code Online (Sandbox Code Playgroud)

KeyValuePair该类是否不能以我使用的方式序列化?还是我的ObjectData课有问题?

D S*_*ley 4

尝试在属性中指定元素名称:

[XmlArray("Values")]
[XmlArrayItem("KeyValuePair")]
public List<KeyValuePair<string, string>> Values { get; set; }
Run Code Online (Sandbox Code Playgroud)