2010-02-12 19 views
6

C# içindeki bir ifadeden çağrılan ilk yöntemin adını nasıl alabilirim? Aşağıda hayali MethodUtils.NameFromExpression gibi bir şey():linq ifadesinden yöntem adının çıkarılması

Expression<Action<string>> expr = s => s.Trim(); 
Assert.AreEqual("Trim", MethodUtils.NameFromExpression(expr)); 

İdeal herhangi util yöntemi yazılı olacaktır/o Eylem veya Func temsilci türlerinin herhangi biri için ifadeleri sürebilir şekilde aşırı yüklendi.

Şimdiden teşekkürler.

GÜNCELLEME Ben bir cevap (aşağıda) bulundu ama hala girişi gibi bu iyi bir çözüm olup olmadığına ya da zaten BCL bunu yapmanın bir yolu var olup olmadığını olur.

+0

Ben üzereydi Tam olarak ne http://stackoverflow.com/questions/9412182/get-the-names-of-interface-methods-strong-typed/32245698#32245698 HTH .. – ShloEmi

cevap

10

ayıklayıcı ile kazma Biraz benim kendi soru cevap ettik ve: Bu uygulanmasına ilişkin

public static class MethodUtils 
{ 
    public static string NameFromExpression(LambdaExpression expression) 
    { 
     MethodCallExpression callExpression = 
      expression.Body as MethodCallExpression; 

     if(callExpression == null) 
     {     
      throw new Exception("expression must be a MethodCallExpression"); 
     } 

     return callExpression.Method.Name; 
    } 
} 

herhangi bir yorum?

+0

benim cevap edin önermek! – LukeH

+0

"Bu uygulama hakkında herhangi bir yorumunuz var mı?" ==> Cevabımı http://stackoverflow.com/questions/9412182/get-the-names-of-interface-methods-strong-typed/32245698#32245698 adresinden kontrol edin. – ShloEmi

İlgili konular