Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#序列化包含更多列表的对象列表_C#_Xml_Serialization - Fatal编程技术网

C#序列化包含更多列表的对象列表

C#序列化包含更多列表的对象列表,c#,xml,serialization,C#,Xml,Serialization,我对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; } pub

我对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>();
}
公共类MyObject
{
公共Guid ID{get;set;}
公共字符串名称{get;set;}
公共布尔状态{get;set;}
公共列表历史记录{get;set;}=new List();
}
我使用此代码序列化:

List<MyObject> lstObjects;

using (FileStream fileStrm = new FileStream([outputPath], FileMode.Create))
{
    XmlSerializer xmlSerial = new XmlSerializer(typeof(List<MyObject>));
    xmlSerial.Serialize(fileStrm, lstObjects);
}
列出对象;
使用(FileStream fileStrm=new FileStream([outputPath],FileMode.Create))
{
XmlSerializer xmlSerial=新的XmlSerializer(类型(列表));
序列化(fileStrm,lstObjects);
}

但是我在列表
历史记录中得到了一个
系统.invalidooperationexception
。你有什么建议吗?

我为你的问题创建了一个非常简单的例子。我将代码中的大部分部分作为相关示例,除了我在中作为列表实现的数据点之外。我能够序列化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; }

}
类程序
{         
静态void Main(字符串[]参数)
{   
详细信息=新的详细信息();
details.ID=新Guid();
details.Name=“testuser”;
详细信息。状态=true;
details.History=新列表();
Add(newdatapoint(){Name=“test”});
Add(newdatapoint(){Name=“test1”});
Add(newdatapoint(){Name=“test2”});
Add(newdatapoint(){Name=“test3”});
序列化(细节);
}
私有静态void序列化(详细信息)
{
XmlSerializer serializer=新的XmlSerializer(typeof(Details));
使用(TextWriter writer=newstreamwriter(@“C:\Users\testuser\Desktop\Xml.Xml”))
{
序列化器。序列化(编写器,详细信息);
}
}
}
公开课详情
{
公共Guid ID{get;set;}
公共字符串名称{get;set;}
公共布尔状态{get;set;}
公共列表历史记录{get;set;}=new List();
}
公共类数据点
{
公共字符串名称{get;set;}
}