Soru Mevcut fonksiyonun adı nasıl alınır? [çift]


Olası Kopyalama:
Yürütülmekte olan yöntemin adını bulmak için yansıma kullanabilir misiniz?
Geçerli yöntem adının nasıl koddan alınacağı 

Örneğin:

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

baskı: foo

C # 'da yapmak mümkün mü?


44
2018-04-12 19:34


Menşei


.Net 4.5'de, arayanın adını almak için CallerMemberNameAttribute'ı kullanabilirsiniz. Görmek msdn.microsoft.com/en-us/library/... ... Daha sonra işlevinizin gövdesini ([CallerMemberName] dizesi functionName = "") => {} gibi anonim bir işleve sarabilirsiniz. Yansıma yönteminin kabul edilen cevapta kullanılması ile ilgili problemler: (1) fonksiyonun satır içi ve / veya (2) fonksiyonun ismi kamuya açık değilse ve kod gizlenirse gizlenebilir. - GreatAndPowerfulOz


Cevaplar:


Bunu dene:

System.Reflection.MethodBase.GetCurrentMethod().Name 

102
2018-04-12 19:37



Tam olarak öyle. Teşekkürler - Jack
.Net 4.5 kullanan kişiler için CallerMemberNameAttribute - bohdan_trotsenko


Yığın izini kontrol edebilirsiniz

using System.Diagnostics;

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

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

Ancak, yöntem satır içi ise, üst yöntem adını alırsınız.


14
2018-04-12 19:36