我在Properties.Settings.Default.Temporary中存储文件夹的目录路径,我允许用户使用PropertyGrid更改此值和其他设置。
当用户决定重置设置时,我想通过使用Properties.Settings.Default.Reset()将Properties.Settings.Default.Temporary更改为System.IO.Path.GetTempPath()的值。 p>
我了解System.Configuration.DefaultSettingValueAttribute。像这样:
[global::System.Configuration.DefaultSettingValueAttribute(System.IO.Path.GetTempPath())]
不起作用。
我还阅读了Storing default value in Application settings (C#),其中描述了一个相关问题,但我想知道是否有办法以上述方式解决我的问题。
答案 0 :(得分:0)
DefaultSettingValueAttribute.Value
属性是string
,因此在使用该值时,您无法传递要调用的函数调用。事实上,没有能力将代码传递给属性:只有文字是可能的。
而是在重置设置的应用程序代码中,通过在编译时希望具有非文字值的设置和设置(例如,取决于执行环境)来执行此操作。
答案 1 :(得分:0)
我自己有一个解决方法的想法:
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(null)]
public string TemporaryDirectory
{
get
{
if (this["TemporaryDirectory"] == null)
{
return System.IO.Path.GetTempPath();
}
return ((string)this["TemporaryDirectory"]);
}
set
{
if (System.IO.Directory.Exists(value) == false)
{
throw new System.IO.DirectoryNotFoundException("Directory does not exist.");
}
this["TemporaryDirectory"] = value;
}
}
我不知道,如果这有任何副作用,但到目前为止似乎有效。对不起,我发帖后不久就有了这个想法。我应该再考虑这个问题了。