在mscorlib中找不到System.Diagnostics.StackFrame.GetFrame(index)

时间:2016-07-30 12:01:29

标签: c# .net

我创建了两个控制台应用程序,都针对.NET框架的v4.5.2。

class MyDisposable : IDisposable
{
    public void Dispose()
    {
        var callerName = new StackTrace().GetFrame(1)?.GetMethod()?.Name;

        Console.WriteLine($"Dispose called by {callerName}.");
    }
}

运行良好。

另一方面,我有以下内容,实际上是相同的。

return Disposable.Create(() =>
{
    var stackFrame = new StackFrame();
    var callingMethodBase = stackFrame.GetFrame(1)?.GetMethod();

    ...
});

但Visual Studio intellisense报告:

  

'StackFrame'不包含。的定义   'GetFrame'并没有扩展方法'GetFrame'   接受'StackFrame'类型的第一个参数   可以找到(你错过了使用   指令或程序集引用?)

当我在StackFrames类上转到定义时,我发现GetFrames类的类声明中没有方法StackFrame mscorlib 的程序集版本都相同,即v4.0.0.0。

为什么?

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您使用的是StackTrace,但在第二个示例中,您使用的是StackFrame

Stack Trace 的方法是GetFrame(),但Stack Frame 却没有。