Свойства.Настройки.Пользовательский тип списка по умолчанию не сохранен!

#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 ). Спасибо за отличную помощь 🙂