SettingsProperty未按添加顺序保存至user.config的原因排查
问题:动态添加的Settings属性写入user.config时顺序混乱
问题背景
- 动态创建的配置属性名称带有递增前缀,示例格式:
- XXX_00_MySetting
- XXX_01_MyOtherSetting
- XXX_02_MyOtherOtherSetting
- 原本预期属性写入
user.config的顺序,与调用SettingsPropertyCollection.Add方法添加属性的顺序一致,但实际每次保存后打开user.config,属性的写入顺序完全混乱。 - 尝试过以下排序代码,没有效果:
Properties.Settings.Default.Properties.OfType<SettingsProperty>().OrderBy(s => s.Name);
属性创建与保存代码
属性创建代码(C#)
SettingsProperty setting = new SettingsProperty(settingName); setting.PropertyType = typeof(double); setting.DefaultValue = column.ActualWidth; setting.IsReadOnly = false; setting.Provider = Settings.Default.Providers["LocalFileSettingsProvider"];; setting.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute), new System.Configuration.UserScopedSettingAttribute());
属性保存代码(C#)
Settings.Default.Properties.Add(setting); Settings.Default[setting.Name] = someValue; // 注:仅将属性添加到Properties集合无法写入user.config,必须赋值后才会被识别为已覆盖的默认值
预期与实际效果
期望写入顺序
- XXX_00_MySetting
- XXX_01_MyOtherSetting
- XXX_02_MyOtherOtherSetting
实际混乱顺序
- XXX_02_MyOtherOtherSetting
- XXX_00_MySetting
- XXX_01_MyOtherSetting
内容的提问来源于stack exchange,提问作者FCodex
相关产品推荐
相关产品推荐

