炫意html5
最早CSS3和HTML5移动技术网站之一

MVC中StackTrace如何过滤非用户方法

最近程序里面需要在方法中获取所有调用该方法的类和方法,用如下代码可以获取到,但是里面还包含了系统的方法,不知道如何过滤。

            var st = new StackTrace(new StackFrame(1,true));
var sfs = st.GetFrames();
foreach (var sf in sfs)
{
//非用户代码,系统方法及后面的都是系统调用,不获取用户代码调用结束
//获取堆栈信息中的方法名
var sfOffset = sf.GetILOffset();
if (StackFrame.OFFSET_UNKNOWN != sfOffset && sfOffset > 0)
{
var method = sf.GetMethod();
var tagName = $"{method.ReflectedType.Name}-{method.Name}";
if (!tags.Contains(tagName))
tags.Add(tagName);
}
}

使用StackFrame.OFFSET_UNKNOWN != sfOffset && sfOffset > 0) 可以过滤部分,但还是存在非用户方法。

回答

所谓“系统”和“用户”很多就没有区别。比如你github来的微软的,你怎么认定?你是认为他是“系统”还是非“系统”,那么只有按照包,根据自己的意识去filter。

炫意HTML5 » MVC中StackTrace如何过滤非用户方法

Java基础教程Android基础教程