C#应用程序中的自定义用户配置

时间:2016-09-13 17:23:38

标签: c# .net app-config configuration-files setting

假设我有一个需要引用某种形式的用户配置文件的命令行应用程序。此外,此文件中包含的值仅由用户手动更新 - 不会有任何更新应用程序内配置文件的方法,应用程序也不会在启动后查找任何输入。如果配置文件中缺少配置列表,则应使用默认值。

据我所知,Visual Studio / .NET Framework提供了用于创建此类构造的工具(即Settings和App.configs),但我不确定我是否正确使用它们 - 或者我是否应该使用它们完全使用它们。

我创建了一个设置文件并投入了几个默认设置(例如,SomeBooleanFlag是一个bool,其默认值为' False')。这个添加当然反映在我的App.config中。但是,这就是困境所在:我应该如何从App.config中读取?

目前,我已经创建了一个类来抽象配置管理器/设置内容:

class AppSettings
{
    public static bool SomeBooleanFlag
    {
        get
        {
            try
            {
                string rawValue = ConfigurationManager.AppSettings["SomeBooleanFlag"];

                bool userSetSomeBooleanFlag;
                bool userValueParsed = bool.TryParse(rawValue, out userSetSomeBooleanFlag);

                return (userValueParsed) ? userSetSomeBooleanFlag : Settings.Default.SomeBooleanFlag;
            }
            catch
            {             
                return Settings.Default.SomeBooleanFlag;
            }                
        }
    }
}

然后让我有能力写作:

if (AppSettings.SomeBooleanFlag) 
{ 
    /* Do Something... */ 
}

然而,这似乎不是解决我上面提到的问题的干净方法。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以重用Visual Studio中内置的功能来为您生成此包装器,而不是编写自己的应用程序设置包装器。请参阅How to: Add or Remove Application SettingsHow To: Read Settings at Run Time With C#。除了指定设置的类型外,您还可以指定范围(用户或应用程序)。

按照上述文章中的步骤,它会将设置添加到您的App.config文件中,下面是一个示例:

<configuration>
...
    <applicationSettings>
        <ConsoleApplication1.Properties.Settings>
            <setting name="TestKey" serializeAs="String">
                <value>TestValue</value>
            </setting>
        </ConsoleApplication1.Properties.Settings>
    </applicationSettings>
...
</configuration>

您可以按如下方式访问这些设置:

string s = Properties.Settings.Default.TestKey;