首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >作为列表属性的XML数组反序列化失败

作为列表属性的XML数组反序列化失败
EN

Stack Overflow用户
提问于 2019-01-07 07:51:05
回答 1查看 87关注 0票数 1

我正在尝试序列化/反序列化一个具有ConcurrentBag类型字段的类。

这是我的方法:

public class XmlSerializable
{
    [XmlIgnore]
    public ConcurrentBag<string> Array = new ConcurrentBag<string>();
    [XmlElement(ElementName = "Array")]
    public List<string> ArrayXml { get { return Array.ToList(); } set { Array = new ConcurrentBag<string>(value); } }
}

当我尝试序列化它时,一切看起来都很好,但是当我尝试反序列化它时,数组是空的。

    XmlSerializable serializable = new XmlSerializable();
    serializable.Array.Add("entry1");

    XmlSerializer xmlSerializer = new XmlSerializer(typeof(XmlSerializable));
    StringWriter stringWriter = new StringWriter();
    XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Indent = true });
    xmlSerializer.Serialize(xmlWriter, serializable);
    string xml = stringWriter.ToString();
    Console.WriteLine(xml);

    StringReader stringReader = new StringReader(xml);
    XmlReader xmlReader = XmlReader.Create(stringReader);
    xmlSerializer = new XmlSerializer(typeof(XmlSerializable));

    XmlSerializable deserialized = (XmlSerializable)xmlSerializer.Deserialize(xmlReader);
    Console.WriteLine(deserialized.Array.Count);

以下是代码片段输出:

<?xml version="1.0" encoding="utf-16"?>
<XmlSerializable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Array>entry1</Array>
</XmlSerializable>
0

正如您所看到的,序列化是有效的,但是在反序列化时,数组是空的。

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 08:32:28

当class像这样定义时,看起来是工作的:

public class XmlSerializable
{
    [XmlIgnore]
    public ConcurrentBag<string> Array = new ConcurrentBag<string>();
    [XmlElement(ElementName = "Array")]
    public string[] ArrayXml { get { return Array.ToArray(); } set { Array = new ConcurrentBag<string>(value); } }
}

该属性必须是string[]而不是List<string>。这很奇怪,因为它可以处理List<T>类型的字段,但显然不能处理List<T>类型的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54067004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档