获取堆栈跟踪中泛型方法的类型参数

时间:2014-07-30 09:06:40

标签: c# .net debugging diagnostics

我以编程方式访问堆栈帧并提取有关我感兴趣的堆栈信息。其中一个问题是特定文件的类型参数(如果它存在于跟踪中)。

我不关心快速或可维护的解决方案,这不是生产代码。

这里有一些代码,如果它有助于灵感...这会产生一个字符串集合,这些字符串是文件名和行号,其中程序集存在于ProjectFiles中定义的列表中。 (请原谅我的惯例和风格,这些不是我的选择。)

var Frames = new StackTrace(true).GetFrames();
var FileNames = Frames
    .Where(Location => ProjectFiles.Any(File => File.Contains(Location.GetMethod().Module.Name)))
    .Select(
        Frame => string.Format("{0}:{1}", Frame.GetFileName() ?? string.Empty, Frame.GetFileLineNumber()))
    .Select(Location => Location.Substring(Location.LastIndexOf("\\", StringComparison.Ordinal) + 1))
    .Reverse();

示例输出:

Round Trip: SomeUI.cs:583 -> SomeRepository.cs:34, 002ms.

0 个答案:

没有答案