c# - 获取当前方法名称

标签 c# methods

我想要当前调用的处理程序的名称。

MethodInfo.GetCurrentMethod().NameMethodBase.GetCurrentMethod().Name 在 Debug模式下工作正常。

但是一旦我混淆(使用 confuserEx)我的项目,这 2 个函数返回 "System.Reflection.MethodBase ()"

我注意到我可以使用以下行获取我的函数的名称: ((RoutedEventHandler)this.MyMethodName).GetMethodInfo().Name

它返回 "MyMethodName",这是预期的结果。

但这根本不是通用的。当我不知道当前方法的名称时,我想要一段代码。

最佳答案

如前所述here :

调用方信息值在编译时作为文字发送到中间语言 (IL) 中。与异常的 StackTrace 属性的结果不同,结果不受混淆的影响。

因此从您的方法中您可以尝试调用以下方法:

public string GetCaller([System.Runtime.CompilerServices.CallerMemberName] string memberName = "")
{
     return memberName;
}

关于c# - 获取当前方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34156818/

相关文章:

c# - Arduino串行监视器和java重置变量

c# - 通过类字符串属性过滤

python - python 方法如何自动接收 'self' 作为第一个参数?

java - 在java中创建变量或调用方法

c# - 作为静态类的一部分与[理论上]作为 namespace 的一部分,扩展方法是否以任何实际方式受益?

c# - 如何使用 MTOM 将 vb6 中带有图像附件的 soap 发送到 c# 中的 Web 服务?

javascript - 在方法之间传递 jQuery 元素数据?

c# - C#中作为静态多态的方法重载

javascript - 下拉 Javascript 错误 : object doesn't support property or method 'matches'

C# 为链接方法创建 Fluent API