मुझे पता है कि मैं विचित्र से पूछ रहा हूं लेकिन सिर्फ किक्स के लिए, क्या लैम्ब्डा अभिव्यक्ति के लिए MethodInfo
प्राप्त करना संभव है?लैम्ब्डा अभिव्यक्ति के लिए MethodInfo प्राप्त करें
(Func<int, string>(i => i.ToString())).MethodInfo
अद्यतन मैं चाहे lamda के शरीर एक विधि कॉल अभिव्यक्ति है या नहीं विधि की जानकारी प्राप्त करना चाहते हैं, यानी की परवाह किए बिना:
मैं कुछ इस तरह के बाद कर रहा हूँ लैम्ब्डा का शरीर किस प्रकार की अभिव्यक्ति है।
तो, उदाहरण के लिए
यह काम कर सकता है।
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => Program.GetNewDog(i);
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), ((MethodCallExpression)(conversionExpression.Body)).Method);
class Program
{
static Dog GetNewDog(int i)
{
return new Dog();
}
}
लेकिन मैं भी इस काम करना चाहता हूँ:
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => new Dog();
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), /*...???... */);
एक अभिव्यक्ति में कोई विधि जानकारी नहीं है। यदि आप इसे संकलित करते हैं, तो आप प्रतिनिधि से विधि जानकारी प्राप्त कर सकते हैं। – leppie
मुझे अभिव्यक्ति बनाने में कोई दिलचस्पी नहीं है। मैंने नीचे तीमुथियुस शील्ड्स के जवाब के जवाब में अद्यतन जोड़ा। मैं चाहता हूं कि एक प्रतिनिधि से एक methodInfo है। मुमकिन? –
यह ठीक काम करता है '(नया Func (i => i.ToString())) विधि –
leppie