【问题标题】:Which Method Am I In?我采用哪种方法?
【发布时间】:2014-02-25 04:57:54
【问题描述】:
我的目标是在我的方法中添加一些#if DEBUG,但是我不想编辑我复制并粘贴到每个方法中的代码。
有没有这样的通用代码:
void DoSomething()
{
#if Debug
Log("Now In " + MethodName);
#endif
}
其中 MethodName 填充为等于 DoSomething 或称为 Log 的任何方法?
【问题讨论】:
标签:
c#
winforms
debugging
methods
【解决方案1】:
如果您使用的是 .NET 4.5,则可以使用 CallerMemberName 属性:
public static GetCallerMemberName([CallerMemberName]string caller = null)
{
return caller;
}
请注意,在调用此方法时,您不需要将任何内容作为参数传递 - C# 编译器会为您完成工作。这也意味着您可以避免在运行时执行反射,从而使此方法更快。
用法:
void DoSomething()
{
#if Debug
Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething"
#endif
}
【解决方案2】:
System.Reflection.MethodBase.GetCurrentMethod().Name