Подтвердить что ты не робот

Производительность с использованием атрибутов информации о вызывающем абоненте

Я пытаюсь найти способы регистрации имени метода эффективным образом w.r.t. скорости и ремонтопригодности. Я думаю, In.Net 4.5 Атрибуты информации о вызывающем абоненте отображаются только для этой цели, кроме части скорости. Я чувствую, что это просто синтаксические сахара, используя System.Reflection.MethodBase.GetCurrentMethod() или stackTrace.GetFrame(1).GetMethod(). Name (Получено от здесь), (или) Являются ли эти методы также полезными для производительности?

В С#, есть способ получить имя метода во время компиляции (как в С++)?

4b9b3361

Ответ 1

Атрибуты информации о вызывающем абоненте заставляют компилятор С# предоставлять имя вызывающего абонента на callsite. Это происходит во время компиляции, нет отражения.

public void DoProcessing()
{
    LogCall();
}

public void LogCall([CallerMemberName] string memberName = "")
{
     Console.WriteLine(memberName + " was called.");
}

Будет скомпилирован:

public void DoProcessing()
{
    LogCall("DoProcessing");
}

public void LogCall(string memberName)
{
     Console.WriteLine(memberName + " was called.");
}