我想设置以下行为:
我的应用程序使用通过 ConfigDesigner 创建的配置文件。因此我创建了一个默认配置
namespace MyApp.Configuration {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
public sealed partial class MyConfig: global::System.Configuration.ApplicationSettingsBase {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("100")]
public double Size{
get {
return ((double)(this["Size"]));
}
set {
this["Size"] = value;
}
}
}
}
通过调用MyConfig.Default.Size
,我得到了值,它存储在MyApp.exe.config
.
但是现在我想决定运行时(这些Bool
可能会更改多次),如果允许用户使用MyApp.exe.config
. 所以我将我的MyConfig.Default
-Property 的设置器更改为:
private static MyConfig userInstance = ((MyConfig)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new MyConfig())));
public static MyConfig Default
{
get
{
if(ConfigIsAllowed)
return userInstance;
else
{
/* Here I wanna return the default-values */
}
}
}
但我不知道如何返回默认配置。我知道,配置有可能Reset()
,但我不想重置存储配置的文件。我只想返回默认值。我还找到了一种通过返回一个默认值的解决方案MyConfig.Default.Properties["NAME"].DefaultValue
,但是通过使用它,我不能使用像MyConfig.Default.Size
.
获得默认配置或用户配置的最佳解决方案是什么?