У меня странная ошибка при попытке сохранить объект в изолированном хранилище. У меня есть класс, который имеет некоторые свойства, вот код:
[DataContract]
public class ExerciseStatistic
{
[XmlIgnore]
public int CorrectAnswers
{
get
{
return Attempts.Where(a => a.AttemptAnswerIsCorrect).Count();
}
}
[XmlIgnore]
public int IncorrectAnswers
{
get
{
return Attempts.Where(a => !a.AttemptAnswerIsCorrect).Count();
}
}
[XmlIgnore]
public int AnswerAttempts
{
get { return Attempts.Count; }
}
public List<AnswerAttempt> Attempts { get; set; }
public ExerciseStatistic()
{
Attempts = new List<AnswerAttempt>();
}
}
public class AnswerAttempt
{
public DateTime AttemptDate { get; set; }
public string AttemptTargetName { get; set; }
public string AttemptName { get; set; }
public bool AttemptAnswerIsCorrect { get; set; }
}
Однако, при попытке сохранить его с этим предложением:
IsolatedStorageSettings.ApplicationSettings["a"] = new ExerciseStatistic()
{
Attempts = new List<AnswerAttempt>()
{
new AnswerAttempt()
{
AttemptAnswerIsCorrect = true,
AttemptDate = DateTime.Now,
AttemptName = "lala",
AttemptTargetName = "lala2"
},
new AnswerAttempt()
{
AttemptAnswerIsCorrect = false,
AttemptDate = DateTime.Now,
AttemptName = "lalab",
AttemptTargetName = "lalab2"
}
}
};
Я получаю исключение, подобное этому (я немного изменил сигнатуру кода с поддельными именами, но для примера он служит своей цели):
Тип 'XX.Model.FirstClass.SecondClass' не может быть сериализован. Рассматривать
пометить его атрибутом DataContractAttribute и пометить все
его членов, которые вы хотите сериализовать с DataMemberAttribute
атрибут.
Я не понимаю, почему сериализатор пытается сериализовать объект моей модели (который не сериализуем), когда класс, который я ему даю, не имеет ссылок на этот тип типа ... что я скучаю? -> Нет, я не хочу добавлять атрибуты datacontract к классам, которые мне не нужны и не планируют сериализоваться, поэтому, пожалуйста, не отвечайте так:)