在类上使用XmlSerializer时遇到的问题:对象类型不是原语

本文关键字:对象 问题 类型 原语 遇到 XmlSerializer | 更新日期: 2023-09-27 18:10:03

当尝试序列化一个类时,我得到这个错误:"生成XML文档出错。参数对象的类型不是原始的。"

public class TaskData
{
    [XmlAttribute("Date")]
    public DateTime Date;
    public string Summary;
    public string Task;
    public int Priority; //1 Next, 2 Today, 3 This week, 4 This month, 5 This year.
    public bool InProgress;
    public TaskData() {}
    public TaskData(DateTime date, string summary, string task, int priority, bool inprogress)
    {
        Date = date;
        Summary = summary;
        Task = task;
        Priority = priority;
        InProgress = inprogress;
    }
}
public class Tasks
{
    [XmlArray("Tasks")]
    public List<TaskData> tasks;
    public Tasks(){tasks = new List<TaskData>();}
}
    static internal void Save(Tasks task)
    {
        string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        Save(task, Path.Combine(path, "tasks.xml"));
    }
    static private void Save(Tasks task, string path)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(TaskData));
        TextWriter writer = new StreamWriter(path);
        serializer.Serialize(writer, task);
        writer.Close();
    }
有人看出我的错误了吗?我不确定是什么导致了这个错误。我是用Mono 2.10写这篇文章的。Save函数在另一个类中(在这里的代码中看不到)。

在类上使用XmlSerializer时遇到的问题:对象类型不是原语

变化

XmlSerializer serializer = new XmlSerializer(typeof(TaskData));

XmlSerializer serializer = new XmlSerializer(typeof(Tasks));