Я планирую поместить вызов MethodBase.GetCurrentMethod () в начале большинства методов (для информативного ведения журнала), но, поскольку это потребует больших затрат, было бы хорошо, если бы использовался условный атрибут, например
#define LogMethodNames
где ...
[Conditional("LogMethodNames")]
ставится над каждым вызовом строки GetCurrentMethod (), например:
void DoStuff()
{
[Conditional("LogMethodNames")]
logger.CurrentMethod = MethodBase.GetCurrentMethod();
// stuff done here
}
... так что, по крайней мере, его можно исключить из сборок релиза.
Возможно ли что-то подобное?
Спасибо!
Gregg
PS Я бы попробовал это сам сейчас, но по какой-то причине я не смог заставить работать Атрибуты из-за ошибки компиляции. Doh.
PPS Если это не сработает, я бы создал метод, который присваивает объекту логгера, например:
void SetCurrentMethod(MethodBase currentMethod)
{
logger.CurrentMethod = currentMethod;
}
и использование:
void DoStuff()
{
[Conditional("LogMethodNames")]
SetCurrentMethod(MethodBase.GetCurrentMethod());
// stuff done here
}
Есть мысли ?! Спасибо: -)