#c# #.net #visual-studio-2010 #settings
#c# #.net #visual-studio-2010 #Настройки
Вопрос:
Привет, узнал о свойствах класса настроек.Настройки.Сегодня по умолчанию и сохранение строк и т.д. работает отлично, хотя, когда я хочу сохранить созданный мной пользовательский список, он не работает. Список всегда равен нулю, даже если в файле конфигурации appdata есть запись с пустым значением node. Список унаследован от ObservableCollection, где blabla имеет свойства Size (тип size) и name (тип string). Кто-нибудь может мне помочь?
Комментарии:
1. я имел в виду, что он унаследован от ObservableCollectioon<blabla>, где blabla имеет свойства Size (тип size) и name (тип string)..
Ответ №1:
Я добавил
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)]
к свойству в классе настроек (Settings.настройки):
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)]
public global::TestWpfApplication.EtikettDimensionList Dimensions
{
get
{
return ((global::TestWpfApplication.EtikettDimensionList)(this["Dimensions"]));
}
set
{
this["Dimensions"] = value;
}
}
Это приведет к сериализации объектов в двоичном формате. Если вам нужен XmlFormat, вы должны реализовать сериализацию XML для всех классов.
Комментарии:
1. Если вы написали тип, в классе должен быть
[Serializable]
атрибут. Если это класс из фреймворка, он будет упомянут в справке, и, наконец, во всех других случаях вы можете использовать Reflector для проверки атрибутов.2. я установил атрибут Serializable как для списка, так и для ‘blabla’, все еще не работает!
3.
code
общедоступный класс EtikettDimensionList : ObservableCollection<EtikettDimension> { } [Сериализуемый] общедоступный класс EtikettDimension { общедоступное строковое имя { get; set; } общедоступный размер Size { get; set; } общедоступный EtikettDimension(строковое имя, размер size) { this. Name = имя; это. Size = размер; } общедоступная переопределяющая строка toString() { возвращает имя » » Размер. toString(); } }code
4. Понял. Смотрите мою правку в моем ответе.
5. Эй, Эрно, извини за поздний ответ! Сегодня попробовал еще раз, и теперь это работает (с атрибутом serializable ). Спасибо за отличную помощь 🙂