Foo
メソッドを持つクラスがありSomeMethod()
ます。でSomeMethod()
、私は実行します:Bar bar = new Bar(); bar.BBQ();
。内で、メッセージとともに例外をスローするBBQ()
プライベートメソッドを呼び出します。Name(n)
new StackTrace().GetFrame(n).GetMethod().Name
私の意図は、Name(n)に1を渡して、値「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 );
}
}