Пустое CallerMemberName и такие атрибуты - PullRequest
0 голосов
/ 24 октября 2019

Похоже, атрибуты CallerMemberName, CallerFilePath, CallerLineNumber не работают в .Net Core 3.0 (значения пусты).

    [HttpGet]
    public string GetObjects(
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0)
    {
        try
        {
        ...
        }
        catch (Exception e)
        {
            LogException(e, memberName, sourceFilePath, sourceLineNumber);
            throw e;
        }
    }

Я пытался использовать рецепты описано здесь и здесь , но они тоже не работают.

Это ошибка или известная функция? Или я пропускаю что-то важное?

РЕДАКТИРОВАТЬ

Моя ошибка заключалась в том, что я добавил атрибуты не в ту функцию, в которую мне нужно было добавить. Я изменил свой код на

[HttpGet]
public string GetObjects()
{
    try
    {
    ...
    }
    catch (Exception e)
    {
        LogException(e);
        throw e;
    }
}

private void LogException(Exception e, 
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0)
    {
        _logger.LogError(_event, e, "Exception in {memberName}, {sourceFilePath}, {sourceLineNumber} ", memberName, sourceFilePath, sourceLineNumber);
    }

и теперь он работает как положено.

...