सवाल वर्तमान फ़ंक्शन का नाम कैसे प्राप्त करें? [डुप्लिकेट]


संभावित डुप्लिकेट:
क्या आप वर्तमान में निष्पादन विधि का नाम ढूंढने के लिए प्रतिबिंब का उपयोग कर सकते हैं?
सी # कोड से वर्तमान विधि का नाम कैसे प्राप्त करें 

उदाहरण के लिए:

void foo() {
    Console.Write(__MYNAME__);
}

प्रिंट: foo

सी # में यह संभव है?


44
2018-04-12 19:34


मूल


.NET 4.5 में, आप कॉलर का नाम प्राप्त करने के लिए CallerMemberNameAttribute का उपयोग कर सकते हैं। देख msdn.microsoft.com/en-us/library/... ... फिर आप अपने फ़ंक्शन के बॉडी को गुमनाम फ़ंक्शन में लपेट सकते हैं ([CallerMemberName] string functionName = "") => {}। प्रतिबिंबित विधि के रूप में प्रतिबिंब विधि का उपयोग करने में समस्याएं हैं कि (1) फ़ंक्शन को रेखांकित किया जा सकता है, और / या (2) फ़ंक्शन नाम को गैर-सार्वजनिक होने पर obfuscated किया जा सकता है और कोड obfuscated है। - GreatAndPowerfulOz


जवाब:


इसे इस्तेमाल करे:

System.Reflection.MethodBase.GetCurrentMethod().Name 

102
2018-04-12 19:37



बिल्कुल यह धन्यवाद - Jack
.NET 4.5 का उपयोग करने वाले लोगों के लिए, वहां है CallerMemberNameAttribute - bohdan_trotsenko


आप स्टैक ट्रेस की जांच कर सकते हैं

using System.Diagnostics;

// get call stack
StackTrace stackTrace = new StackTrace();

// get calling method name
Console.WriteLine(stackTrace.GetFrame(0).GetMethod().Name);

लेकिन सावधान रहें, अगर विधि रेखांकित है तो आपको पैरेंट विधि का नाम मिलता है।


14
2018-04-12 19:36