我正在尝试序列化/反序列化一个具有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
正如您所看到的,序列化是有效的,但是在反序列化时,数组是空的。
https://stackoverflow.com/questions/54067004
复制相似问题