Проблема с использованием XmlSerializer в классе: тип объекта не примитивный

#c# #.net #mono #xmlserializer

#c# #.net #mono #xmlserializer

Вопрос:

Я получаю эту ошибку при попытке сериализации класса: «Произошла ошибка при создании 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. Функции сохранения находятся в другом классе (который вы не видите в приведенном здесь коде).

Ответ №1:

Изменить

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

Для

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