selenium = new DefaultSelenium(
ConfigurationManager.AppSettings["TestMachine"].ToString(),
4444,
ConfigurationManager.AppSettings["Browser"].ToString(),
ConfigurationManager.AppSettings["URL"].ToString()
);
有没有一种有效的方法来做到这一点,而不是重复:
ConfigurationManager.AppSettings[""].ToString()
答案 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;
}
}
这有几个好处:
答案 4 :(得分:1)
如果您想要强类型参考,则可以继承ConfigurationSection
/ ConfigurationElementCollection
和ConfigurationElement
。
您可以使用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();
}
}