首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取MethodBase.GetCurrentMethod()但没有参数

获取MethodBase.GetCurrentMethod()但没有参数
EN

Stack Overflow用户
提问于 2018-10-25 00:43:12
回答 2查看 437关注 0票数 1

我有个功能

代码语言:javascript
复制
public void AddPerson(string name)
{
    Trace.WriteLine(MethodBase.GetCurrentMethod());
}

预期输出是

代码语言:javascript
复制
void AddPerson(string name)

但我希望输出的方法名中没有参数。

代码语言:javascript
复制
void AddPerson()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 00:52:25

要可靠地做到这一点将是一个问题,您必须构建它,即返回类型、名称、泛型类型、访问修饰符等。

例如:

代码语言:javascript
复制
static void Main(string[] args)
{
   var methodBase =  MethodBase.GetCurrentMethod() as MethodInfo;
     
   Console.WriteLine($"{methodBase.ReturnType.Name} {methodBase.Name}()");
}

输出

代码语言:javascript
复制
Void Main()

陷阱,你在追逐一个移动的目标:

代码语言:javascript
复制
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");
}

输出

代码语言:javascript
复制
System.ValueTuple`2[System.String,System.String] Blah(Int32)
ValueTuple`2 Blah()

另一种选择是使用类似于以下内容的参数来正则化:(?<=\().*(?<!\))

票数 3
EN

Stack Overflow用户

发布于 2018-10-25 00:50:39

GetCurrentMethod方法返回一个MethodBase对象,而不是字符串。因此,如果您想要一个与.ToString()返回的字符串不同的字符串,可以从MethodBase属性中拼凑出一个字符串,或者只返回Name属性,例如:

代码语言:javascript
复制
Trace.WriteLine(MethodBase.GetCurrentMethod().Name);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52979774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档