我如何在C#中获取调用方法

可能重复:
如何找到调用当前方法的方法?

我需要一种方法来了解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(); } 

来自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); 

你几乎肯定不想这样做。 呼叫者永远不应该知道谁在呼叫它。 相反,两个调用者之间的差异应该被抽象为一个参数,并传递给被调用的方法:

 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); } 

这样,如果你添加一个方法3,它可以以某种方式做某事,而doSomething也不会关心。