代码之家  ›  专栏  ›  技术社区  ›  Gabriel McAdams

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

  •  1
  • Gabriel McAdams  · 技术社区  · 14 年前

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

    与我共事过的开发人员对此有不同的看法。有人说要对字符串进行硬编码,也有人建议应该有一个包含字符串常量的文件,在代码中,可以使用常量作为appsettings键。

    我想听听其他人对此的看法。你是做什么的?为什么是最好的?

    4 回复  |  直到 14 年前
        1
  •  4
  •   Arjan Einbu    14 年前

    跳过字符串常量,而是创建一个配置包装类。

    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
  •  5
  •   Wyatt Barnett    14 年前

    字符串常量总比什么都没有好,但我最初赞成使用配置类来提供对配置值的强类型、智能感知友好的访问。如果我因为某种原因一直在使用AppSettings。

    在一个更完美的世界里,我会投票赞成完全避免appSettings并使用定制的配置类,因为从长远来看,它们要干净得多。

        3
  •  2
  •   Justin Niessner    14 年前

    赢的字符串常量。

        4
  •  1
  •   Damien Dennehy    14 年前

    I've always been a fan of Rick Strahl's method.

    至于静态字符串很难处理,如果需要,可以将类分解为子类和属性。例如,在我当前使用的应用程序中,我有App.Settings用于常规设置,App.EmailSettings用于电子邮件设置,App.EventSettings用于事件日志记录设置。