Получить тип времени выполнения стековых фреймов
Мне было интересно, можно ли было получить тип вызывающих методов во время выполнения стека в трассировке.
Рассмотрим следующий пример:
class Parent
{
public void Foo()
{
var stack = new StackTrace();
foreach (var frame in stack.GetFrames())
{
var methodInfo = frame.GetMethod();
Console.WriteLine("{0} (ReflectedType: {1})", methodInfo.ToString(), methodInfo.DeclaringType);
}
}
}
class Child : Parent
{
}
Если я создаю экземпляр Child и вызываю Foo
var child = new Child();
child.Foo();
Foo напечатает: Void Foo () (ReflectedType: Parent)
Есть ли способ получить фактические типы времени выполнения (в данном случае Child) вызывающих методов в трассировке стека?