2008-11-20 16 views

cevap

11

Üzgünüm, 2.0 kullanıyorum belirtilen olmalıdır, bu yüzden lambdas erişimi yok: Bu lambda ifadeleri ile yapmak oldukça kolaydır. İşte ben bunu kadar sona erdi geçerli:

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

Ben bir "MyMethod" yöntemini oluşturmak ve ihtiyacım olursa olsun parametreleri geçirir Bu şekilde (param1 ve param2, bu örnek için sadece ben aslında kullanılmaz kodudur) için .

21

MatchEvaluator bir temsilci olduğundan imzasını değiştiremezsiniz. Ek parametreyle bir yöntemi çağıran bir temsilci oluşturabilirsiniz.

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

Çok teşekkür ederim! Bu cevabı seviyorum –