2016-07-30 49 views
-1

我創建了兩個控制檯應用程序,都是針對.NET框架的v4.5.2。在mscorlib中找不到System.Diagnostics.StackFrame.GetFrame(索引)

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中智能感知報告:

'的StackFrame' 不包含 '的getFrame' 的定義和沒有擴展方法 '的getFrame' 接受類型 '的StackFrame' 的第一個參數可以找到(是否缺少使用 指令或程序集引用?)

當我請參閱StackFrames類的定義,我看到方法GetFramesStackFrame類的類聲明中不存在。 mscorlib的組件版本都是相同的,即v4.0.0.0。

這是爲什麼?

回答

2

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

堆棧跟蹤有方法GetFrame(),但堆棧框架沒有。

+1

我的不好。很慚愧。我應該看起來更難。 –

+1

@ WaterCoolerv2 - 不用擔心,它發生在我們身上。 – ChrisF

相關問題