我想要两个 .settings 文件。一个为设置的默认值,另一个为用户选择。我希望这两个设置文件包含相同的设置名称,但不一定是相同的值。
也许解决方案不需要两个 .settings 文件,但这是我唯一的想法。
简而言之,我希望这能够建议用户在为他的使用选择错误设置后选择返回默认值。
编辑 :
我使用visual studio 2010,它在一个win Form项目中
只是关于当用户选择更改了setting.settings文件时如何恢复默认配置(我如何保存这些默认配置)
我想要两个 .settings 文件。一个为设置的默认值,另一个为用户选择。我希望这两个设置文件包含相同的设置名称,但不一定是相同的值。
也许解决方案不需要两个 .settings 文件,但这是我唯一的想法。
简而言之,我希望这能够建议用户在为他的使用选择错误设置后选择返回默认值。
编辑 :
我使用visual studio 2010,它在一个win Form项目中
只是关于当用户选择更改了setting.settings文件时如何恢复默认配置(我如何保存这些默认配置)
每个用户设置(或任何设置)的SettingsProperty
对象都可以通过类Properties
上的集合获得Settings
。然后,您可以查看该DefaultValue
属性以获取默认值(为特定用户设置之前的值。例如,如果您通常像这样访问您的属性:
var value = Properties.Settings.Default.MySetting;
然后你可以得到这样的默认值:
var defaultValue = Properties.Settings.Default.Properties["MySetting"].DefaultValue;
默认值是您在 Visual Studio 的设置编辑器中设置的值。
我不知道获取默认值的任何其他方式。为了避免字符串属性名称,您可以编写一个扩展方法来获取基于编译器检查表达式的默认值:
public static class SettingsExtensions
{
public static T GetSettingDefaultValue<T, T2>(this T2 settings,
Expression<Func<T2, T>> expression) where T2 : ApplicationSettingsBase
{
MemberExpression memberExpr = expression.Body as MemberExpression;
return (T)settings.Properties[memberExpr.Member.Name].DefaultValue;
}
}
并得到这样的默认值:
var defaultValue = Settings.Default.GetSettingDefaultValue(s => s.MySetting);