我正在尝试使用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总是没有计数。我不知道为什么我的列表不想保存。任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
您需要使用[SettingsSerializeAs(SettingsSerializeAs.Binary)]
[DefaultSettingValue(""), UserScopedSetting]
[SettingsSerializeAs(SettingsSerializeAs.Binary)]
public List<MyAwesomeClass> MyObjects
Application Settings Architecture»设置持久性»设置序列化
如果您实现自己的设置类,则可以使用SettingsSerializeAsAttribute
标记二进制或二进制的设置 使用SettingsSerializeAs
枚举进行自定义序列化。