关于如何在代码中引用web.config键名的想法

时间:2010-07-01 17:30:22

标签: asp.net web-config

当您的web.config或app.config文件有appsettings条目时,在代码文件中引用其键的最佳方法是什么?

我曾与之合作的开发人员对此有不同的看法。有人说硬编码字符串,而其他人则建议应该有一个包含字符串常量的文件,在你的代码中,你使用常量作为appsettings键。

我有兴趣听取其他意见。你是做什么?为什么它是最好的?

4 个答案:

答案 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。