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



我创建了两个控制台应用程序,都针对.NET框架的4.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类的"定义"时,我发现StackFrame类的类声明中没有方法GetFramesmscorlib的两个程序集版本相同,即v4.0.0。

为什么?

在第一个示例中使用StackTrace,但在第二个示例中则使用StackFrame

StackTrace有GetFrame()方法,但StackFrame没有。

最新更新