可能重复:
如何找到调用当前方法的方法?
我需要一种方法来了解C#中调用方法的名称.
例如:
private void doSomething()
{
// I need to know who is calling me? (method1 or method2).
// do something pursuant to who is calling you?
}
private void method1()
{
doSomething();
}
private void method2()
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
And*_*son 56
来自http://www.csharp-examples.net/reflection-calling-method-name/
using System.Diagnostics;
// get call stack
StackTrace stackTrace = new StackTrace();
// get calling method name
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);
Run Code Online (Sandbox Code Playgroud)
你几乎肯定不想这样做.呼叫者永远不应该知道谁在呼叫它.相反,两个调用者之间的差异应该被抽象为一个参数,并传递给被调用的方法:
private void doSomething(bool doItThisWay)
{
if (doItThisWay)
{
// Do it one way
}
else
{
// Do it the other way
}
}
private void method1()
{
doSomething(true);
}
private void method2()
{
doSomething(false);
}
Run Code Online (Sandbox Code Playgroud)
这样,如果你添加一个方法3,它可以以某种方式做某事,而doSomething也不会关心.