当您的web.config或app.config文件有appsettings条目时,在代码文件中引用其键的最佳方法是什么?
我曾与之合作的开发人员对此有不同的看法。有人说硬编码字符串,而其他人则建议应该有一个包含字符串常量的文件,在你的代码中,你使用常量作为appsettings键。
我有兴趣听取其他意见。你是做什么?为什么它是最好的?
答案 0 :(得分:5)
字符串常量总比没有好,但我最初投票使用配置类来提供对配置值的强类型,intellisense友好访问。如果由于某种原因我坚持使用AppSettings。
在一个更完美的世界中,我会投票完全避免使用appSettings并使用自定义配置类,因为从长远来看它们更加清晰。
答案 1 :(得分:4)
跳过字符串常量,改为创建一个配置包装类。
class MyConfiguration
{
public static string SomeConfigValue
{
get
{
return WebConfigurationManager.AppSettings["SomeConfigValue"];
}
}
public static int SomeOtherConfigValue
{
get
{
return int.Parse(WebConfigurationManager.AppSettings["SomeOtherConfigValue"];
}
}
//..and so on
}
然后你可以这样得到它:
string s = MyConfiguration.SomeConfigValue;
int i = MyConfiguration.SomeOtherConfigValue;
(如果你想在单元测试时删除配置系统的依赖关系,你可能会考虑不去静态路由)
答案 2 :(得分:2)
胜利的字符串常量。
在字符串常量中保持公共字符串可以使事情更容易维护。如果配置文件中的某个键更改了名称,则只需在一个位置更改它,而不必担心在整个应用程序中查找硬编码字符串的每个实例。
答案 3 :(得分:1)
I've always been a fan of Rick Strahl's method.
对于笨重的静态字符串,如果需要,可以将类分解为子类和属性。例如,在我正在处理的应用程序中,我有一般设置的App.Settings,电子邮件设置的App.EmailSettings和事件记录设置的App.EventSettings。