📜  c# 获取执行方法名称 - C# (1)

📅  最后修改于: 2023-12-03 15:29:48.207000             🧑  作者: Mango

C# 获取执行方法名称

在 C# 中,我们经常需要在运行时获取当前执行的方法的名称,这对于跟踪错误、优化以及日志记录非常有帮助。在本文中,我们将介绍几种获取执行方法名称的方法。

方法一:使用 StackTrace 和 StackFrame 类
using System.Diagnostics;

// 获取当前方法名
string methodName = new StackTrace().GetFrame(0).GetMethod().Name;

// 获取上级方法名
string parentMethodName = new StackTrace().GetFrame(1).GetMethod().Name;

此方法使用 StackTraceStackFrame 类来获取当前执行方法的名称。 GetFrame(0) 方法返回当前方法的 StackFrame 对象,然后我们可以使用 GetMethod().Name 获取方法名称。

如果需要获取上级方法名,可以使用 GetFrame(1) 获取上级方法的 StackFrame 对象。

方法二:使用 CallerMemberName 属性
using System.Runtime.CompilerServices;

public void Method([CallerMemberName] string methodName = null)
{
    // 使用方法名
}

此方法使用 CallerMemberName 属性,并将其作为一个方法参数来获取当前方法的名称。需要注意的是,此方法只能在该方法内使用。

方法三:使用 Reflection
using System.Reflection;

string methodName = MethodBase.GetCurrentMethod().Name;

此方法使用 Reflection 来获取方法名。我们可以使用 GetCurrentMethod().Name 方法获取当前方法的名称。

需要注意的是,此方法比前两种方法要慢一些。如果您在编写高性能的代码,我们建议使用第一种或第二种方法。

结论

以上是几种获取 C# 方法名的方法。使用这些方法可以帮助您编写更高效的代码,并跟踪调试过程中出现的问题。希望这篇文章对您有所帮助。