我是这个网站的新手,所以我为我的任何不正确的格式道歉。
我正在开发一个项目,我正在尝试将包含类型为TDF_Test
的List的类序列化为XML文件,但我一直收到错误“有一个错误反映了类型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);
这是stacktrace:
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();
}
}
}
我做了很多搜索,但没有找到一个好的解决方案。有谁知道我能做什么?如果您需要任何其他信息或代码,请与我们联系。
非常感谢。
答案 0 :(得分:1)
XmlSerializer希望根据它可以通过检查类型预先弄清楚的模式来编写数据。 “对象”根本就没有在这里看到。它想知道类型。这里的“好解决方案”很简单:停止尝试序列化未知/不可预测的数据,并切换到您选择的序列化程序可以推理的简单DTO模型。特别是,标准的/ string / float / etc成员,嵌套的子对象,其中公布了类型,子类/继承通过XmlIncludeAttribute 等通知,列表,数组,收集也很好,显然 - 但是当SomeType []很好时,Array或object []不是。