You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Properties.Settings保存自定义类失败问题求助

自定义类型SettingsModel在Properties.Settings中保存后重启丢失的问题

问题现象

使用Properties.Settings保存bool、string等基本类型时操作正常,但将项目内自定义类ProjectName.Models.SettingsModel设为字段类型(字段名AppSettings)后,调用Save()看似成功,重启项目后AppSettings却返回null,参考相关方案后仍未解决。

相关代码:

Properties.Settings.Default.IsRemember = true;
Properties.Settings.Default.AppSettings = new SettingsModel()
{ 
    AccentColorItems  = Settings.AccentColorItems,
    ThemeItems = Settings.ThemeItems,
    SelectedAccentColor = Settings.SelectedAccentColor,
    SelectedTheme = Settings.SelectedTheme,
    SelectedLanguage = Settings.SelectedLanguage,
    AppNotifications = Settings.AppNotifications,
    SystemNotifications = Settings.SystemNotifications,
    AllowAutomaticUpdating = Settings.AllowAutomaticUpdating
};
Properties.Settings.Default.Save();

解决步骤

  • 给自定义类添加可序列化标记:SettingsModel必须标记[Serializable]特性,否则.NET无法将其序列化保存到配置文件。示例代码:
    [Serializable]
    public class SettingsModel
    {
        // 类属性定义
        public List<AccentColor> AccentColorItems { get; set; }
        public List<Theme> ThemeItems { get; set; }
        // 其他属性...
    }
    
  • 检查Settings字段配置:在项目的Settings.settings设计器中,确认AppSettings的类型是ProjectName.Models.SettingsModel,且范围设置为User(Application范围的设置为只读,无法保存修改)。
  • 确保嵌套类型可序列化:如果SettingsModel的属性包含自定义类或集合,这些嵌套类型也需要标记[Serializable];若使用自定义集合,需确保其支持序列化。
  • 验证配置文件内容:保存设置后,到用户配置文件路径(通常在C:\Users\{用户名}\AppData\Local\{公司名}\{项目名}\{版本号}下的.config文件)查看是否存在AppSettings的序列化内容,若不存在则说明序列化失败,需检查类的标记是否正确。
  • 设置默认实例:在Settings设计器中,给AppSettings设置一个默认的SettingsModel实例,避免加载失败时返回null。

内容的提问来源于stack exchange,提问作者Ozgur Saklanmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:17