【发布时间】:2011-11-29 22:25:55
【问题描述】:
我在序列化我的对象时遇到问题。 我实现了 IXmlSerializable 接口并初始化了 XmlSerializer 的对象(例如,序列化器)。 但有时在调用 serializer.Serialize(writer, data) 之后,我的输出文件如下所示:
为什么我会有这样的行为?
public class MyClass : IData
{
private static readonly XmlSerializer _formatter = new XmlSerializer(typeof(MyData));
public void Save(string filePath)
{
using (StreamWriter writer = new StreamWriter(filePath))
{
Save(writer);
writer.Close();
}
}
public void Save(TextWriter Writer)
{
MyData data = GetMyDataObject();
_formatter.Serialize(Writer, data);
}
private MyData GetMyDataObject()
{
MyData data = new MyData ();
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(IData)))
pd.SetValue(data, pd.GetValue(this));
return data;
}
}
public class MyData : IData, IXmlSerializable
{
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteAttributeString("Number", Number);
if (HardwareInformation != null)
{
writer.WriteStartElement("HWInfoList");
foreach (KeyValuePair<string, string> kw in HardwareInformation)
{
writer.WriteStartElement("HWInfo");
writer.WriteAttributeString("Key", kw.Key);
writer.WriteAttributeString("Value", kw.Value);
writer.WriteEndElement();
}
writer.WriteEndElement();
}
}
}
public interface IData
{
Dictionary<string, string> HardwareInformation { get; set; }
string Number { get; set; }
}
【问题讨论】:
-
请提供更多代码。特别是,您是否正确冲洗和关闭了写入器?
-
很难说没有代码... p.s。您可以将图片添加到不链接到其他地方的问题中。
-
请将你已经写好的代码贴出来,你会有更多的机会得到答案。
-
另外,请发布一些您的输出,而不是发布我们无法阅读的图片。
-
你选择实现 IXmlSerializable 是因为字典吗?还有其他(更简单的)方法可以实现这一点,例如拥有一个专用于 XmlSerialization 的属性
标签: c# serialization ixmlserializable