序列化包含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();
}
}
}
我做了很多搜索,还没有找到一个好的解决方案。有人知道我能做什么吗?如果您需要任何其他信息或代码,请告诉我。
非常感谢。
XmlSerializer希望根据可以通过检查类型预先确定的模式写入数据。"对象"根本不在其中。它想知道类型。这里的"好解决方案"很简单:停止尝试序列化未知/不可预测的数据,并切换到您选择的序列化程序可以推理的简单DTO模型。特别是,标准into/string/foat/etc成员、嵌套的子对象(其中类型被播发)、子类/继承通过XmlIncludeAttribute通知等等。显然,列表、数组、集合也都很好,但SomeType[]很好,Array或object[]则不然。