序列化包含List<;对象>;

本文关键字:对象 gt 包含 lt 序列化 List | 更新日期: 2023-09-27 18:20:14

我是这个网站的新手,所以我对我的任何不正确的格式表示歉意。

我正在处理一个项目,并试图将包含类型为TDF_Test的List的类序列化到XML文件中,但我一直收到错误"There was an error reflecting type LoadInformation"。

我也读过内部异常,它说"有一个反映属性‘testList’的错误"。testList是我试图序列化的对象的列表。

这是我的类,其中包含要序列化并保存到XML文件中的列表。

namespace SPCTool.Core_Classes
{
    public class LoadInformation
    {
        public LoadInformation()
        { 
            testList = new List<TDF.TDF_Test>(); 
        }
        public List<TDF.TDF_Test> testList 
        { get; set; }
    }
}

以下是我如何将其保存到XML

LoadInformation info = new LoadInformation();
info.testList = someList; // someList is the same type as testList
SaveXML.SaveData(info, filename);

这是堆叠竞赛:

at SPCTool.User_Interfaces.MainForm.saveToolStripMenuItem_Click(Object sender, EventArgs e) in 
M:'astburyj_TestProcess'IGXLTestProcess'TestProcess'tools'SPCReviewTool'SPCReviewTool'User Interface'MainForm.cs:line 940

这是SaveXML 类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
namespace SPCTool.Core_Classes
{
    public class SaveXML
    {
        public static void SaveData(object obj, string filename)
        {
            XmlSerializer sr = new XmlSerializer(obj.GetType());
            TextWriter writer = new StreamWriter(filename);
            sr.Serialize(writer, obj);
            writer.Close();
        }
    }
}

我做了很多搜索,还没有找到一个好的解决方案。有人知道我能做什么吗?如果您需要任何其他信息或代码,请告诉我。

非常感谢。

序列化包含List<;对象>;

XmlSerializer希望根据可以通过检查类型预先确定的模式写入数据。"对象"根本不在其中。它想知道类型。这里的"好解决方案"很简单:停止尝试序列化未知/不可预测的数据,并切换到您选择的序列化程序可以推理的简单DTO模型。特别是,标准into/string/foat/etc成员、嵌套的子对象(其中类型被播发)、子类/继承通过XmlIncludeAttribute通知等等。显然,列表、数组、集合也都很好,但SomeType[]很好,Array或object[]则不然。