В настоящее время я использую такую функцию:
using System.Diagnostics;
public string __Function() {
StackTrace stackTrace = new StackTrace();
return stackTrace.GetFrame(1).GetMethod().Name;
}
Когда мне нужно __FUNCTION__, я просто вызываю __Function (). Например:
Debug.Assert(false, __Function() + ": Unhandled option");
Конечно, это решение также использует отражение, но это лучший вариант, который я могу найти. Поскольку я использую его только для отладки (а не для трассировки в сборках релизов), снижение производительности не имеет значения.
Полагаю, мне нужно создать функции отладки и пометить их
[ Conditional("Debug") ]
Вместо этого, но я не дошел до этого.
Спасибо Джеффу Мастри за его решение .