nbsp; if (attributes.Length > 0)
{
//包含有"Obsolete"标记抛出错误或做其它处理
throw new Exception(string.Format("方法{0}包括有Obsolete属性已被禁止调用",method.Name));
}
//继续做其它操作
}
到此,当运行Method1时我们的DisabledObsoleteMethod函数就可以正常运作,而Method2就会被抛出异常警告了
因为StackFrame的构造函数可以指定偏移量,所以我们可以使用它获取调用我们的函数时函数调用堆栈里都有些什么函数,也即是可以了解到当前
程序的一个流程是如何的,示例代码如下:
class Test
{
static void Main()
{
int offset = 0;
do
{
StackFrame frame = new StackFrame(offset++);
MethodBase method = frame.GetMethod();
if (method == null) break; //如果偏移位置没有函数时,则GetMethod方法返回null
Console.WriteLine(method.Name);
} while (true);
Console.Read();
}
}
其实.NET已经为我们提供了一个StackTrace类,其可以获取函数调用堆栈里的所有函数的有序集合,通过它我们就能将上面的代码简化为下面的代码了,如下:
class Test
{
static void Main()
{
StackTrace trace = new StackTrace();
foreach (StackFrame frame in trace.GetFrames())
&n