如何从调用扩展方法的扩展方法中获取异步方法名称?

How to get the asynchronous method name in the extension method from where the extension method is called?

提问人:Abdullah Rana 提问时间:6/15/2023 最后编辑:Theodor ZouliasAbdullah Rana 更新时间:6/16/2023 访问量:58

问:

如何从调用扩展方法的扩展方法中获取异步方法名称?

我有一些这样的异步方法:

async Task ProcessUnchangedElementsAsync(ob1, ob2, ob3)
{
    await Task.Delay(500);
}

以及这些异步方法的扩展方法,如下所示:

public static async Task Log(this Task task, List<scanPerformanceLogDto> scanPerformanceLogs)
{
    await task;
    scanPerformanceLogs.Add(new scanPerformanceLogDto()
    {
        Area = {HERE SHOULD BE THE METHOD NAME}
        Time = DateTime.UtcNow
    });
}

我使用这个扩展方法来跟踪方法完成执行后的时间,如下所示:

await ProcessUnchangedElementsAsync(ob1, ob2, ob3).Log(scanPerformanceLogs);

它工作正常,除了我需要扩展方法中的名称“ProcessUnchangedElementsAsync”。怎么做呢?

C# asp.net ASP.Net-Core 异步 扩展方法

评论

2赞 Jeroen Mostert 6/15/2023
你没有。您的扩展方法处于 开启状态,它不包含有关如何创建该方法的信息。该属性可用于获取调用方法的名称,该名称可用于某些重新排列,但不适用于当前设置。TaskTaskCallerMemberName
0赞 MakePeaceGreatAgain 6/15/2023
谁说任务是用你的任何方法创建的?例如,如果我使用过呢?关于扩展方法的要点是它们扩展了一个类型,而不是一个特定的成员Task.Run(...).Log()
0赞 Xinran Shen 6/16/2023
正如 Jeroen Mostert 所说,你没有。我尝试使用来获取方法信息,但似乎无法在您的设置中获得预期的结果StackTrace

答: 暂无答案