使用ApplicationSettingsBase自定义设置保存C#中的自定义对象列表

时间:2016-10-30 22:54:34

标签: c# .net xml winforms settings

我正在尝试使用ApplicationSettingsBase保存自定义对象列表。这是我的应用程序设置类:

internal class ApplicationSettings: ApplicationSettingsBase
{
    [DefaultSettingValue(""), UserScopedSetting]
    public List<MyAwesomeClass> MyObjects
    {
        get
        {
            try
            {
                return this["MyObjects"] as    List<MyAwesomeClass>;
            }
            catch (SettingsPropertyNotFoundException)
            {
                return null;
            }             
        }
    }

    public void Add(MyAwesomeClass val)
    {
        MyObjects.Add(val);
        this["MyObjects"] =  MyObjects;
    }
}

这是我的自定义类:

[Serializable]
public class MyAwesomeClass 
{
    public Guid Id { get; set; }
    public string SomeStringProperty{ get; set; }
    public bool SomeBooleanProperty{ get; set; }
}

以下是用法:

_applicationSettings = new ApplicationSettings();
_applicationSettings.Add(new MyAwesomeClass {/*Some initial values*/});
_applicationSettings.Save();

但是当应用程序重新启动_applicationSettings.MyObjects总是没有计数。我不知道为什么我的列表不想保存。任何人都可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您需要使用[SettingsSerializeAs(SettingsSerializeAs.Binary)]

来装饰该属性
[DefaultSettingValue(""), UserScopedSetting]
[SettingsSerializeAs(SettingsSerializeAs.Binary)]
public List<MyAwesomeClass> MyObjects
  

Application Settings Architecture»设置持久性»设置序列化
  如果您实现自己的设置类,则可以使用   SettingsSerializeAsAttribute标记二进制或二进制的设置   使用SettingsSerializeAs枚举进行自定义序列化。