PDA

View Full Version : بدست آوردن نام متد فراخوانی کننده متد جاری



resident
دوشنبه 12 اسفند 1392, 21:47 عصر
سلام.
فرض کنید تابع f2داخل f1 فراخوانی شده.
من میخوام داخل تابع f2 نام تابعی که f2 رو فراخوانی کرده(در این مثال f1) رو بدست بیارم.

از دستور زیر استفاده کردم اما exception میده

MethodBase.GetCurrentMethod().Name



کسی می تونه راهنمایی کنه؟

resident
سه شنبه 13 اسفند 1392, 13:01 عصر
راه حلشو پیدا کردم.

[MethodImpl(MethodImplOptions.NoInlining)]
Function f1()
{
F2();
}

Function f2()
{
StackTrace stackTrace = new StackTrace();
string CallerMethodName = stackTrace.GetFrame(1).GetMethod().Name;
}

کد بدون [MethodImpl(MethodImplOptions.NoInlining)]هم کار می کنه. کسی میدونه این دستور به خاطر چیه و اگه نباشه چه مشکلی ایجاد می کنه؟

ورودی تابع GetFrame(1) چیه؟ چرا 1؟