我想创建一个函数或宏,它将以namespace.class.function()的格式返回当前代码位置

时间:2009-11-19 19:55:17

标签: c#

我基本上想要调用此函数代码来获取一些指标,因此它需要立即知道执行代码的位置。 所以我可以使用这个位置记录代码执行位置。 这可能吗?

2 个答案:

答案 0 :(得分:2)

查看System.Diagnostics.StackTrace。

public void CallerTest()
{
    CallerInformation();
}

public void CallerInformation()
{
    System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
    System.Diagnostics.StackFrame caller = stackTrace.GetFrame(1); // The caller
    int callLineNumber = caller.GetFileLineNumber();
    System.Reflection.MethodBase callerMethod = caller.GetMethod();
    string callerName = callerMethod.ReflectedType.FullName + "." + callerMethod.Name;
    System.Diagnostics.Debug.Write(string.Format("Caller - Line:{0} Method:{1}", callLineNumber, callerName));
}

答案 1 :(得分:0)

简短的回答是 - 是的,我猜测这是可能的,但我不确定。 你需要阅读反思 - 你可以动态地动态构建和编译程序集,所以我想你能够做你想做的事情 - 或者足够接近的事情。

对不起 - 你说出问题的方式让你有点难以理解你想做什么。忽略你想做的技术细节(注入一个函数) - 你实际上想要实现的是什么?