gpt4 book ai didi

c# - 将 Dictionary 序列化/反序列化为 XML

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:14 27 4
gpt4 key购买 nike

我正在使用以下代码将字典序列化为 XML 文件:

[XmlArray]
[XmlArrayItem(ElementName="Element")]
public List<ElementClass> ParameterList
{
get
{
return Parameters.Select(p => new ElementClass() { Key = p.Key, Value = p.Value }).ToList();
}
set
{
Parameters = value.ToDictionary(x => x.Key, x => x.Value);
}
}

[XmlIgnore]
public Dictionary<string, string> Parameters { get; set; }

这很好用,生成的 XML 看起来不错,但是当我反序列化 XML 时,字典总是空的。我尝试调试代码,但由于某种原因只有 Getter 被反序列化调用。我似乎无法理解哪里出了问题。

最佳答案

当 XmlSerializer 尝试填充 ParameterList 属性时,它首先检查它是否已有值。如果是,它只是向其中添加项目,而从不设置该属性。换句话说,它是这样做的:

var list = obj.ParameterList;
list.Add(deserializedElementClass1);
list.Add(deserializedElementClass2);
...

不是这个:

var list = new List<ElementClass>();
list.Add(deserializedElementClass1);
list.Add(deserializedElementClass2);
...
obj.ParameterList = list;

由于在反序列化过程中永远不会调用 ParameterList 属性的 setter ,因此也永远不会分配 Parameters 属性。

在 Paul Welter 的博客上查看这个 XML 序列化字典实现:http://weblogs.asp.net/pwelter34/444961

关于c# - 将 Dictionary<string,string> 序列化/反序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33432726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com