怎样知道是哪个方法调用了小弟我

怎样知道是哪个方法调用了我?比如有方法A,当B方法调用A时,怎么才能在A里知道是B在调用?[解决办法]在B里可

怎样知道是哪个方法调用了我?
比如有方法A,当B方法调用A时,怎么才能在A里知道是B在调用?
[解决办法]
在B里可以通过反射,在堆栈里查找
System.Reflection.MethodInfo mi = (System.Reflection.MethodInfo) (new StackTrace().GetFrame(1).GetMethod());
if(mi.Name=="A")
  //A调用的
[解决办法]

引用:
在B里可以通过反射,在堆栈里查找
System.Reflection.MethodInfo mi = (System.Reflection.MethodInfo) (new StackTrace().GetFrame(1).GetMethod());
if(mi.Name=="A")
  //A调用的


如果这个方法被CLR内联,未必能得到正确的结果。
要不然Windows事件也不要什么sender参数了。

在.NET 4.5/VS2012以前,这个问题无解。在.NET 4.5上,有一组专门的Attribute可以把调用信息嵌入方法。
[解决办法]
WhoCalledMe
[解决办法]
static void A()
        {
            StackFrame sf = new StackTrace().GetFrame(1);
            Console.WriteLine(sf.GetMethod().Name);
        }