我有个功能
public void AddPerson(string name)
{
Trace.WriteLine(MethodBase.GetCurrentMethod());
}预期输出是
void AddPerson(string name)但我希望输出的方法名中没有参数。
void AddPerson()发布于 2018-10-25 00:52:25
要可靠地做到这一点将是一个问题,您必须构建它,即返回类型、名称、泛型类型、访问修饰符等。
例如:
static void Main(string[] args)
{
var methodBase = MethodBase.GetCurrentMethod() as MethodInfo;
Console.WriteLine($"{methodBase.ReturnType.Name} {methodBase.Name}()");
}输出
Void Main()陷阱,你在追逐一个移动的目标:
public static (string, string) Blah(int index)
{
var methodBase = MethodBase.GetCurrentMethod() as MethodInfo;
Console.WriteLine(MethodBase.GetCurrentMethod());
Console.WriteLine($"{methodBase.ReturnType.Name} {methodBase.Name}()");
return ("sdf","dfg");
}输出
System.ValueTuple`2[System.String,System.String] Blah(Int32)
ValueTuple`2 Blah()另一种选择是使用类似于以下内容的参数来正则化:(?<=\().*(?<!\))。
发布于 2018-10-25 00:50:39
GetCurrentMethod方法返回一个MethodBase对象,而不是字符串。因此,如果您想要一个与.ToString()返回的字符串不同的字符串,可以从MethodBase属性中拼凑出一个字符串,或者只返回Name属性,例如:
Trace.WriteLine(MethodBase.GetCurrentMethod().Name);https://stackoverflow.com/questions/52979774
复制相似问题