Проблемы с сохранением коллекции объектов в настройках приложения
Я пытаюсь сохранить коллекцию пользовательских объектов в настройках приложения.
С некоторой помощьюэтот связанный вопросвот что у меня сейчас есть:
// implementing ApplicationSettingsBase so this shows up in the Settings designer's
// browse function
public class PeopleHolder : ApplicationSettingsBase
{
[UserScopedSetting()]
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)]
public ObservableCollection<Person> People { get; set; }
}
[Serializable]
public class Person
{
public String FirstName { get; set; }
}
public MainWindow()
{
InitializeComponent();
// AllPeople is always null, not persisting
if (Properties.Settings.Default.AllPeople == null)
{
Properties.Settings.Default.AllPeople = new PeopleHolder()
{
People = new ObservableCollection<Person>
{
new Person() { FirstName = "bob" },
new Person() { FirstName = "sue" },
new Person() { FirstName = "bill" }
}
};
Properties.Settings.Default.Save();
}
else
{
MessageBox.Show(Properties.Settings.Default.AllPeople.People.Count.ToString());
}
}
В конструкторе Settings.Settings я добавил свойство типа PeopleHolder с помощью кнопки браузера и установил область действия «Пользователь». Метод Save (), кажется, завершается успешно, сообщений об ошибках нет, но при каждом перезапуске настройки приложения не сохраняются.
Хотя это и не показано в приведенном выше коде, я могу сохранить строки, но не свою собственную коллекцию (я заметил, что в других подобных вопросах по SO иногда могут возникать проблемы с номерами версий, которые не позволяют сохранить настройки при отладке, поэтому я хочу использовать правило это как возможный виновник.)
Есть идеи? Я уверен, что есть очень простой способ сделать это, что я просто скучаю :).
Спасибо за вашу помощь!