2010-02-12 15 views
6

मैं सी # में अभिव्यक्ति से बुलाए गए पहले विधि का नाम कैसे प्राप्त कर सकता हूं? नीचे काल्पनिक MethodUtils.NameFromExpression की तरह कुछ():linq अभिव्यक्ति से विधि नाम निकालने

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

आदर्श रूप में किसी भी util विधि लिखा जाएगा/इस तरह से है कि यह कार्रवाई या समारोह प्रतिनिधि प्रकारों में से किसी के लिए अभिव्यक्ति ले सकता है में अतिभारित।

अग्रिम धन्यवाद।

अद्यतन

मैं एक जवाब (नीचे) पाया, लेकिन अभी भी इनपुट की तरह के रूप में है कि क्या यह एक अच्छा समाधान है करने के लिए या कि क्या वहाँ पहले से ही बीसीएल में ऐसा करने का एक तरीका मौजूद है होगा।

+0

http://stackoverflow.com/questions/9412182/get-the-names-of-interface-methods-strong-typed/32245698#32245698 HTH .. – ShloEmi

उत्तर

10

डीबगर के साथ खुदाई के बारे में थोड़ी और मैं अपने खुद के प्रश्न का उत्तर दिया:

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

इस कार्यान्वयन पर कोई टिप्पणी?

+0

पर मेरा उत्तर चेक वास्तव में मैं क्या करने के लिए के बारे में था सुझाना! – LukeH

+0

"इस कार्यान्वयन पर कोई टिप्पणी?" ==> http://stackoverflow.com/questions/9412182/get-the-names-of-interface-methods-strong-typed/32245698#32245698 पर मेरा उत्तर देखें – ShloEmi

संबंधित मुद्दे