将设置重置为SpecialFolder

时间:2012-07-26 14:30:45

标签: c# .net settings reset

我在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#),其中描述了一个相关问题,但我想知道是否有办法以上述方式解决我的问题。

2 个答案:

答案 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;
        }
    }

我不知道,如果这有任何副作用,但到目前为止似乎有效。对不起,我发帖后不久就有了这个想法。我应该再考虑这个问题了。