У меня есть объект настроек для моего приложения, в котором есть две коллекции. Коллекции - это простые дженерики List, содержащие коллекцию пакетов свойств. Когда я его сериализую, все сохраняется без проблем:
XmlSerializer x = new XmlSerializer(settings.GetType());
TextWriter tw = new StreamWriter(@"c:\temp\settings.cpt");
x.Serialize(tw, settings);
Однако, когда я десериализую его, все восстанавливается, кроме двух коллекций (проверяется путем установки точки останова на установщиках:
XmlSerializer x = new XmlSerializer(typeof(CourseSettings));
XmlReader tr = XmlReader.Create(@"c:\temp\settings.cpt");
this.DataContext = (CourseSettings)x.Deserialize(tr);
Что бы это вызвало? Все довольно ванильно ... вот фрагмент из объекта настроек ... опуская большинство из них. PresentationSourceDirectory работает просто отлично, но установщик PresentationModules не срабатывает:
private string _presentationSourceDirectory = string.Empty;
public string PresentationSourceDirectory {
get { return _presentationSourceDirectory; }
set {
if (_presentationSourceDirectory != value) {
OnPropertyChanged("PresentationSourceDirectory");
_presentationSourceDirectory = value;
}
}
}
private List<Module> _presentationModules = new List<Module>();
public List<Module> PresentationModules {
get {
var sortedModules = from m in _presentationModules
orderby m.ModuleOrder
select m;
return sortedModules.ToList<Module>();
}
set {
if (_presentationModules != value) {
_presentationModules = value;
OnPropertyChanged("PresentationModules");
}
}
}