[英]Why can't XmlSerializer serialize this list object?
这是我的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
PaneData data = new PaneData();
data.Add("S1");
data.Add("S2");
data.SerializableLogFilters.Add("S3");
XmlSerializer serializer = new XmlSerializer(typeof(PaneData));
FileStream stream = new FileStream("Test.xml", FileMode.Create);
StreamWriter streamWriter = new StreamWriter(stream);
serializer.Serialize(streamWriter, data);
streamWriter.WriteLine(String.Empty);
streamWriter.Flush();
stream.Close();
}
public class PaneData : IEnumerable<string>, INotifyCollectionChanged
{
public List<string> RowList { get; set; }
public List<string> SerializableLogFilters { get; set; }
public event NotifyCollectionChangedEventHandler CollectionChanged;
public PaneData()
{
RowList = new List<string>();
SerializableLogFilters = new List<string>();
}
protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (CollectionChanged != null)
{
CollectionChanged(this, e);
}
}
public void Add(string item)
{
RowList.Add(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
public IEnumerator<string> GetEnumerator()
{
return RowList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
这是序列化到的内容:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>S1</string>
<string>S2</string>
</ArrayOfString>
为什么在序列化文件中看不到S3和第二个字符串数组?
这是因为PaneData
实现IEnumerable<string>
,序列化器不再关心其他任何属性,而只使用枚举器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.