我的结构如下:
public class BaseClass
{
public string SendError(string Message){
//which method called me
return Message;
}
}
public class TypeAClass : BaseClass
{
public static TypeAClass Instance { get; set;}
public void TestToTest()
{
SendError("Test Message");
}
}
我可以在SendError方法中获取调用SendError()的方法名称。例如,在这种情况下,它应该给我名称TestToTest()
答案 0 :(得分:9)
这是C#5的一个特性:
您可以将函数的参数声明为调用者信息:
public string SendError(string Message, [CallerMemberName] string callerName = "")
{
Console.WriteLine(callerName + "called me.");
}
答案 1 :(得分:2)
试试这个
StackTrace stackTrace = new StackTrace();
String callingMethodName = stackTrace.GetFrame(1).GetMethod().Name;
答案 2 :(得分:2)
StackFrame caller = (new System.Diagnostics.StackTrace()).GetFrame(0);
string methodName = caller.GetMethod().Name;
答案 3 :(得分:0)
来自重复问题的the answer:
using System.Diagnostics;
// get call stack
StackTrace stackTrace = new StackTrace();
// get calling method name
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);
或更简短:
new StackTrace().GetFrame(1).GetMethod().Name