2008-11-20 16 views

Odpowiedz

11

Niestety, powinienem wspomnieć, że używam 2.0, więc nie mam dostępu do lambdas. Oto, co skończyło się robi:

private string MyMethod(Match match, bool param1, int param2) 
{ 
    //Do stuff here 
} 

Regex reg = new Regex(@"{regex goes here}", RegexOptions.IgnoreCase); 
Content = reg.Replace(Content, new MatchEvaluator(delegate(Match match) { return MyMethod(match, false, 0); })); 

ten sposób można stworzyć „myMethod” metodę i przekazać ją cokolwiek parametry muszę (param1 i param2 to tylko dla tego przykładu, a nie kod I rzeczywiście używany) .

21

MatchEvaluator jest delegatem, więc nie możesz zmienić jego podpisu. Możesz utworzyć delegata, który wywołuje metodę z dodatkowym parametrem. Jest to dość łatwe do zrobienia z wyrażeń lambda:

text = reg.Replace(text, match => MatchEvalStuff(match, otherData)); 
+0

Dziękuję bardzo! Uwielbiam tę odpowiedź –

Powiązane problemy