#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));