假设我有一个需要引用某种形式的用户配置文件的命令行应用程序。此外,此文件中包含的值仅由用户手动更新 - 不会有任何更新应用程序内配置文件的方法,应用程序也不会在启动后查找任何输入。如果配置文件中缺少配置列表,则应使用默认值。
据我所知,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... */
}
然而,这似乎不是解决我上面提到的问题的干净方法。任何帮助将不胜感激!
答案 0 :(得分:1)
您可以重用Visual Studio中内置的功能来为您生成此包装器,而不是编写自己的应用程序设置包装器。请参阅How to: Add or Remove Application Settings和How 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;