2017-10-14 24 views
0

私のリストのすべてのインスタンスに対してメソッドを実行しようとしていますが、 ".foreach()"メソッドを使用してしようとすると、メートルの誤差にC# 'string'から 'System.Action <string>'に変換できません

を取得、私は

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; 
} 

私の主なメソッドを呼び出すためにしようとしている

私の方法「『System.Action』から 『文字列』から変換できません」

static void Main(string[] args) 
{  
    IWebDriver driver = new FirefoxDriver(); 

    List<string> serials = new List<string> 
    { 
     "JPV6Q12", 
     "JPV7Q12" 
    }; 
    serials.ForEach(CheckSerial(serials, driver)); 
}; 

は、この1上の任意の助けを事前に よろしくをあなたのすべてをありがとう、

答えて

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は、あなたは可能性が、無効なURLの場合に例外をスローしません:

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); 
+0

ああ、はい。私は、呼び出されたメソッドからの結果をリストに格納することを追加するのを忘れてしまったので、私が持っているすべてのシリアルのすべてのWebタイトルのリストを得ました。私のコードを修正した後、それは魅力のように動作し、私は間違ったことを理解しています。助けてくれてありがとう、ジラッド! –

+0

@GeneParmesan - あなたは歓迎です:)喜んで助けました。 –

関連する問題