提问人:ElDog 提问时间:10/27/2023 更新时间:10/27/2023 访问量:30
集合属性未序列化为 xml [duplicate]
Collection attributes are not serialized to xml [duplicate]
问:
我有一个自定义的可序列化泛型集合,定义(一个简化的示例),如下所示:
[Serializable]
public class ArrayOfItems<T> : IEnumerable<T>
{
[XmlAttribute("Setting")]
public bool Setting { get; set; } = false;
[XmlAnyElement]
public List<T> Items { get; set; } = new List<T>();
public IEnumerator<T> GetEnumerator()
{
return Items.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
IEnumerator iterator = ((IEnumerable<T>)this).GetEnumerator();
while ( iterator.MoveNext() )
{
yield return iterator.Current;
}
}
public void Add( T Object )
{
Items.Add(Object );
}
}
我创建一个实例并使用 xml 序列化器对其进行序列化:
ArrayOfItems<int> ints = new();
ints.Items.Add(0);
ints.Items.Add(1);
using (StreamWriter writer = new
StreamWriter(@"C:\test.xml", false, System.Text.Encoding.Unicode))
{
XmlSerializer serializer = new(ints.GetType());
serializer.Serialize(writer, ints);
writer.Flush();
writer.Close();
}
这是我得到的文件:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>0</int>
<int>1</int>
</ArrayOfInt>
有谁明白为什么 bool Setting 属性没有序列化?
答: 暂无答案
评论
ICollection
IEnumerable