I think the appSettings section is a pretty neat solution for something as simple as your example, and I use this frequently over creating config sections, when no hierarchy is required. I do however find the following snippetpattern useful to add consistency to the way appSettings are used, adding some typing, building in the idea of whether the setting is expected to be found in the .config file, and providing the ability to specify a default value.
public static class AppSettingsHelper
{
private static TReturnType LoadAppSetting<TReturnType>(string name, bool required, TReturnType defaultValue)
{
// Check for missing settings
if (!ArrayExt.Contains<string>(ConfigurationManager.AppSettings.AllKeys, name))
{
if (required)
throw new ConfigurationErrorsException(string.Format("Required setting missing: {0}", name));
else
return defaultValue;
}
// Read the setting and return it
AppSettingsReader reader = new AppSettingsReader();
return (TReturnType)reader.GetValue(name, typeof(TReturnType));
}
//simple example boolean property
public static bool IsSomethingSet
{
get
{
return ApplicationSettingsHelper.LoadAppSetting<bool>(
"settingName",
true,
false);
}
}
//simple example booleanint property
public static boolint SomeCount
{
get
{
return ApplicationSettingsHelper.LoadAppSetting<int>(
"someCount",
true,
0);
}
}
}
Use like this:
if (AppSettingsHelper.IsSomethingSet)
{
Console.WriteLine(AppSettingsHelper.SomeCount);
}