【发布时间】:2014-07-22 07:42:03
【问题描述】:
我想知道是否可以在堆栈跟踪中获取方法调用者的运行时类型。
考虑以下示例:
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)
有没有办法在堆栈跟踪中获取方法调用者的实际运行时类型(在本例中为子级)?
【问题讨论】:
-
你的例子没有多大用处。你还有其他例子吗?在您的示例中,对于第一种方法
Foo,您可以通过this.GetType()获得原始类型? -
@SriramSakthivel 我正在寻找一种适用于堆栈跟踪中每一帧的通用方法
标签: c# .net stack-trace callstack