मेरे पास एक अजीब स्थिति है जहां मुझे प्रतिनिधि के नाम को स्ट्रिंग के रूप में प्राप्त करने की आवश्यकता है। मेरे पास एक सामान्य विधि है जो इस तरह दिखती है।कार्रवाई का नाम प्राप्त करें/Func प्रतिनिधि
private T Get<T>(T task, Action<T> method) where T : class
{
string methodName = method.Method.Name //Should return Bark
}
और मैं इसे इस
private void MakeDogBark()
{
dog = Get(dog, x=>x.Bark());
}
की तरह बोल रहा हूँ लेकिन बजाय "बार्क" देखने का मैं इस "<MakeDogBark>b__19"
देखते हैं। तो ऐसा लगता है कि यह मुझे विधि का नाम दे रहा है जिसने प्रतिनिधि के नाम की बजाय प्रारंभिक कॉल किया।
कोई भी यह कैसे जानता है?
कि खूबसूरती से काम किया। मुझे इसे निष्पादित करने की आवश्यकता नहीं थी, लेकिन मुझे विधि नाम को उस वर्ग में पास करना पड़ा जो इसके साथ कुछ करेगा। केवल एक स्ट्रिंग लेने के बजाय मैं चाहता था कि कॉलर की प्रकार की सुरक्षा मुझे एक असली विधि दे। हमेशा के रूप में आप आदमी हैं :) – Adam
@ जोन एक सामान्य विधि के साथ ऐसा करने का कोई तरीका है? –
@ अरनाब चक्रवर्ती: आपको टाइप तर्क भी निर्दिष्ट करना होगा, लेकिन मेरा मानना है कि यह तब काम करेगा। हालांकि अभी इसे आसानी से आजमा सकते हैं। –