我有一个Foo
方法类SomeMethod()
。在SomeMethod()
中,我运行:Bar bar = new Bar(); bar.BBQ();
。在其中BBQ()
,我调用了Name(n)
引发消息异常的私有方法new StackTrace().GetFrame(n).GetMethod().Name
。
我的意图是将 1 传递给 Name(n),以便它返回值“BBQ”。但是,Name(0) 返回“Name”,而 Name(1) 返回“SomeMethod”。在引发异常的堆栈跟踪中,它也读起来好像 Name 是由 SomeMethod 直接调用的(没有提到 BBQ)。
有没有解决的办法?有谁知道可能导致此错误的原因是什么?是否有更好的方法来完成从 Name 获取值“BBQ”?
[TestClass]
public class Foo
{
public Foo()
{
}
[TestMethod]
public void SomeMethod()
{
Bar bar = new Bar();
bar.BBQ();
}
}
public class Bar
{
public Bar()
{
}
public void BBQ()
{
Name( 1 );
}
private void Name( int n )
{
throw new Exception( new StackTrace().GetFrame(n).GetMethod().Name );
}
}