在C#中使用App Config文件中的值

时间:2011-06-08 14:17:40

标签: c# visual-studio selenium app-config

selenium = new DefaultSelenium(
    ConfigurationManager.AppSettings["TestMachine"].ToString(),
    4444,       
    ConfigurationManager.AppSettings["Browser"].ToString(),        
    ConfigurationManager.AppSettings["URL"].ToString()
);

有没有一种有效的方法来做到这一点,而不是重复:

ConfigurationManager.AppSettings[""].ToString()

8 个答案:

答案 0 :(得分:4)

我认为更好的想法是为处理配置的所有内容编写一个包装类,尤其是在编写测​​试时。一个简单的例子可能是:

public interface IConfigurationService
{
    string GetValue(string key);
}

此方法允许您在需要时模拟配置并降低复杂性

所以你可以继续:

public void SelTest(IConfigurationService config)
{
    var selenium = new DefaultSelenium(config.GetValue("TestMachine"),
        4444, config.GetValue("Browser"), config.GetValue("URL"));
}

或者您可以从List继承您的配置并将输入减少到:

config["Browser"]

答案 1 :(得分:1)

是的,你可以做到

ConfigurationManager.AppSettings[""]

因为它已经是一个字符串。

如果您在多个位置使用ConfigurationManager.AppSettings [“Something”],则应创建一个静态Config类,该类通过静态属性读取AppSettings。

答案 2 :(得分:1)

您可以转到项目的属性并添加设置,然后阅读:     Properties.Settings.Default.Property

答案 3 :(得分:1)

我总是为每个应用程序创建一个配置类,它包装对app / web.config文件的访问,并将配置条目公开为属性。例如。像这样的东西:

public static class MyConfig
{
    /// documentation of config entry
    public static string Browser
    {
      get { return Read("Browser", "some default value"); }
    }

    /// documentation of config entry
    public static int Port
    {
      get { return int.Parse(Read("Browser", "80")); }
    }

    public static string Read(string entry, string defaultValue)
    {
        var entry = ConfigurationManager.AppSettings[entry];
        return string.IsNullOrEmpty(entry) ? defaultValue : entry;
    }
}

这有几个好处:

  • 我可以定义默认值(例如,如果配置条目是可选的/缺少的)
  • 我可以用正确的类型(int,bool)公开数字/布尔配置条目
  • 我可以在中央位置记录所有配置条目

答案 4 :(得分:1)

如果您想要强类型参考,则可以继承ConfigurationSection / ConfigurationElementCollectionConfigurationElement

您可以使用ConfigurationElement[ConfigurationProperty("key", IsRequired = true, DefaultValue = "*^%)(@")]等验证程序指定[StringValidator(MinLength = 3)]的默认值。

答案 5 :(得分:0)

编写辅助函数以获取参数。您需要检查密钥是否实际存在于良好的编码实践中。

答案 6 :(得分:0)

从配置文件中提取的唯一“更有效”的方式是使用整个部分,然后迭代您想要的内容。当你最终得到循环代码时,它不可能比现在的方法更有效。

用于简化的一种模式是创建“应用程序设置”单例并在应用程序加载时加载。您实质上是创建字符串,字符串的通用哈希表(字典等),因此您可以更轻松地完成查找。但是仍然存在通过应用程序设置部分进行翻录的开销。

答案 7 :(得分:0)

你可能需要对课程名称更有创意,但你可以做一些事情:

class ConfigManager
{
    public static string GetSetting(string name)
    {
        return ConfigurationManager.AppSettings[name].ToString();
    }
}