C#获取当前方法的命名空间、类名称、方法名称以及方法的参数信息
- 输出示例
- 模块示例
输出示例
获取信息:WindowsFormsApp1.Form1.button1_Click(System.Object sender,System.EventArgs e)
引发的异常:“System.IndexOutOfRangeException”(位于 WindowsFormsApp1.exe 中)
异常信息: 在 WindowsFormsApp1.Form1.button1_Click(Object sender, EventArgs e) 位置 D:\Demo\WindowsFormsApp1\WindowsFormsApp1\Form1.cs:行号 32
模块示例
private void button1_Click(object sender, EventArgs e)
{
try
{
string info = GetCurrentMethodName(MethodBase.GetCurrentMethod());
Console.WriteLine("获取信息:" + info);
int[] i = new int[1];
Console.WriteLine(i[3]);
}
catch (Exception ex)
{
Console.WriteLine("异常信息:" + ex.StackTrace);
}
}
public static string GetCurrentMethodName(MethodBase methodBase)
{
StringBuilder builder = new StringBuilder();
builder.Append($"{methodBase.DeclaringType.Namespace}.{methodBase.DeclaringType.Name}.{methodBase.Name}(");
for (var i = 0; i < methodBase.GetParameters().Length; i++)
{
var parameter = methodBase.GetParameters()[i];
builder.Append($"{parameter.ParameterType} {parameter.Name}");
if (i < methodBase.GetParameters().Length - 1)
{
builder.Append($",");
}
}
builder.Append($")");
return builder.ToString();
}