我试图在列表中的每个实例上运行一个方法,但是当我尝试使用" .foreach()"方法,我收到错误
"无法转换为' string'到' System.Action'"
我试图打电话的方法
public static string CheckSerial(List <string> serial, IWebDriver Driver)
{
Driver.Navigate().GoToUrl("http://www.dell.com/support/home/uk/en/ukdhs1/product-support/servicetag/" + serial);
return Driver.Title;
}
我的主要方法
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
List<string> serials = new List<string>
{
"JPV6Q12",
"JPV7Q12"
};
serials.ForEach(CheckSerial(serials, driver));
};
先谢谢大家对此有任何帮助, 的问候,
答案 0 :(得分:1)
List<string>.ForEach
期待Action<string>
作为参数,但这不是您传递的参数。
你应该这样称呼它:
public static string CheckSerial(string serial, IWebDriver Driver)
{
Driver.Navigate().GoToUrl("http://www.dell.com/support/home/uk/en/ukdhs1/product-support/servicetag/" + serial);
return Driver.Title;
}
serials.ForEach(s => CheckSerial(s, driver));
但奇怪的是,你对返回值一无所知。如果你想使用它并且GoToUrl
在网址无效的情况下不会抛出异常,那么你可以:
var result = serials.Select(s => new { Serial = s, Title = CheckSerial(s, driver) });
如果您确实希望ForEach
与您最初的工作方式类似,那么您可以将CheckSerial
作为一种扩展方法,并且:
public static void CheckSerial(this IWebDriver Driver, string serial) { ... }
serials.ForEach(driver.CheckSerial);