使用应用程序设置并从app.config读取默认值

Pet*_*ras 5 c# clickonce winforms

我需要使用ClickOnce部署部署Windows窗体应用程序.(VS2008,.NET 3.5)我需要为此应用程序提供任何用户都可以修改的配置文件.出于这个原因,我在app.config中使用应用程序设置而不是标准appSetttings,因此我可以将用户配置与app config分开.

http://msdn.microsoft.com/en-us/library/ms228995(VS.80).aspx

使用VS创建一个Settings.settings文件生成了一个具有硬编码默认值的类,如下所示:

[global::System.Configuration.DefaultSettingValueAttribute("blahblah")]
public string MyProperty
...
Run Code Online (Sandbox Code Playgroud)

我想从app.config中读取默认值!

所以我创建了自己的类派生自ApplicationSettingsBase,但我无法从app.config读取值.有任何想法吗?

Pet*_*ras 0

我实现了 ApplicationSettingsBase 如下:

    public class UserSettings : ApplicationSettingsBase
        {
            private static UserSettings defaultInstance = ((UserSettings)(ApplicationSettingsBase.Synchronized(new UserSettings())));

            public static UserSettings Default
            {
                get
                {
                    return defaultInstance;
                }
            }

            [UserScopedSetting()]
            public string MyProperty
            {
                get { return (string)this["MyProperty"]; }
                set { this["MyProperty"] = (string)value; }
            }
            //add more properties
}
Run Code Online (Sandbox Code Playgroud)

并在 app.config 中添加了正确的 xml...

请参阅http://msdn.microsoft.com/en-us/library/8eyb2ct1(VS.80).aspx

它有效。哈!

一句警告!!ApplicationSettingsBase似乎在实现中使用了一些延迟加载。和集合保持为空ApplicationSettingsBase.PropertiesApplicationSettingsBase.PropertyValues直到至少访问一个属性。

UserSettings settings = new UserSettings();
string temp = settings.MyProperty;//without this line, settings.PropertyValues is empty!! 
SettingsPropertyValueCollection properties = settings.PropertyValues;
Run Code Online (Sandbox Code Playgroud)