我对 C# 中的 Xml.Serialization
有疑问,希望得到帮助。我有一个要序列化的 MyObject
列表。 MyObject
类包含 System.Windows.Forms.DataVisualization.Charting.DataPoint
列表,但我没有得到序列化的 MyObject
列表.
public class MyObject
{
public Guid ID { get; set; }
public string Name { get; set; }
public bool Status { get; set; }
public List<DataPoint> History { get; set; } = new List<DataPoint>();
}
我使用这段代码来序列化:
List<MyObject> lstObjects;
using (FileStream fileStrm = new FileStream([outputPath], FileMode.Create))
{
XmlSerializer xmlSerial = new XmlSerializer(typeof(List<MyObject>));
xmlSerial.Serialize(fileStrm, lstObjects);
}
但是我在 History
列表中得到了一个 System.InvalidOperationException
。你对我有什么建议吗?
我针对您给定的问题创建了一个非常简单的示例。我从您的代码中获取了大部分内容作为相关示例,但我作为列表实现的数据点除外。我能够序列化 XML。希望这会有所帮助。
class Program
{
static void Main(string[] args)
{
Details details = new Details();
details.ID = new Guid();
details.Name = "testuser";
details.Status = true;
details.History = new List<DataPoint>();
details.History.Add(new DataPoint() {Name = "test"});
details.History.Add(new DataPoint() { Name = "test1" });
details.History.Add(new DataPoint() { Name = "test2" });
details.History.Add(new DataPoint() { Name = "test3" });
Serialize(details);
}
private static void Serialize(Details details)
{
XmlSerializer serializer = new XmlSerializer(typeof(Details));
using (TextWriter writer = new StreamWriter(@"C:\Users\testuser\Desktop\Xml.xml"))
{
serializer.Serialize(writer, details);
}
}
}
public class Details
{
public Guid ID { get; set; }
public string Name { get; set; }
public bool Status { get; set; }
public List<DataPoint> History { get; set; } = new List<DataPoint>();
}
public class DataPoint
{
public string Name { get; set; }
}