2014-02-01 3 views
2

Я собираюсь добавить некоторые #if DEBUG к моим методам, однако я не хочу редактировать код, который я копирую и вставляю в каждый метод.Какой метод я в?

Есть ли общий кусок кода, как это:

void DoSomething() 
      { 
#if Debug 
      Log("Now In " + MethodName); 
#endif 
      } 

Где MethodName заполняется равным DoSomething, или в зависимости от того метода называется Log?

+2

возможно дубликат (http://stackoverflow.com/questions/44153/can-you-use- отражение к найти-имя-в-настоящее-исполнителем-метод) – Yuriy

ответ

10

Если вы используете .NET 4.5 вы можете использовать CallerMemberName атрибут:

public static GetCallerMemberName([CallerMemberName]string caller = null) 
{ 
    return caller; 
} 

Обратите внимание, что при вызове этого метода вам не нужно, чтобы передать что-нибудь в качестве аргумента - компилятор С # делает работу для вас. Это также означает, что вы избегаете выполнения отражения во время выполнения, что значительно ускоряет этот метод.

Использование: [? Вы можете использовать отражение, чтобы найти имя метода исполняемой в данный момент]

void DoSomething() 
{ 
#if Debug 
    Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething" 
#endif 
} 
7
System.Reflection.MethodBase.GetCurrentMethod().Name 
Смежные вопросы