您的位置:首页 > 移动开发

避免在代码中直接任意使用ConfigurationManager.AppSettings

2010-10-23 15:46 399 查看
ConfigurationManager.AppSettings可以很方便的获取应用程序配置文件中的内容,如Web.Config。这也导致了在代码中,经常能看见对ConfigurationManager.AppSettings的随意调用。

我们不能假设配置总是正确的,假设配置项是一定存在的,配置项的值一定是正确的。因为手工编辑配置文件,本身没有有效的验证机制,全靠人员自己掌控。当这种不可靠的假设不成立的时候,ConfigurationManager.AppSettings不会给你一个准确的参考。如下面这行代码:

)]
public class ConfigSetting
{
public static int GetMarginX()
{
return GetIntAppSettings("MarginX");
}

private static String GetStringAppSettings(string name)
{
if (string.IsNullOrEmpty(ConfigurationManager.AppSettings[name]))
{
throw new ConfigurationErrorsException(string.Format("Missing ConfigSetting \"{0}\"", name));
}
return ConfigurationManager.AppSettings[name];
}

private static int GetIntAppSettings(string name)
{
string value = GetStringAppSettings(name);
int result = 0;
if (!Int32.TryParse(value, out result))
{
throw new ConfigurationErrorsException(string.Format("Invalid value in ConfigSetting \"{0}\"", name));
}
return result;
}
}


这样,我们就能得到比较清楚的错误提示了。

此外,类不应依赖配置项。在类中处处调用ConfigurationManager.AppSettings,会导致类对配置文件的依赖。比如写单元测试代码时,又得去维护一个配置文件。其实配置项大多配置的是某个对象的属性默认值。我们应该用一个配置类或接口读取配置项值,再注入到要使用配置项的类中。至于采取构造注入,属性注入还是方法注入,就看具体情况了。普通类最好也不要去依赖配置类或配置接口,这种依赖也无太多业务意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: