我怎么知道哪种方法调用我的方法?

Ano*_*ous 3 .net c# c#-3.0

我有3个方法A(),B()和C(),A()和B()都调用C().在方法C()中,如何从A()或B()调用它?

Sjo*_*erd 11

你不应该这样做.某些方法应该执行特定任务,该任务受其参数和对象属性的影响,而不是调用者.


Mic*_*tta 8

我不推荐这种方法 - 其他海报指出了处理这种方法的更好方法.但如果你真的,真的需要知道谁给你打电话,而不改变C()参数,你可以这样做:

static void A()
{
    C();
}

static void C()
{
    StackTrace st = new StackTrace();
    Console.WriteLine(st.GetFrame(1).GetMethod().Name); // prints "A"
}
Run Code Online (Sandbox Code Playgroud)

请注意,生成StackTrace有点昂贵.但是,这并不是什么大问题,除非你在代码中这么做,而且你经常打电话.

同样,你几乎肯定会找到一种更好的方式来做你想做的事情.