我基本上想要调用此函数代码来获取一些指标,因此它需要立即知道执行代码的位置。 所以我可以使用这个位置记录代码执行位置。 这可能吗?
答案 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)
简短的回答是 - 是的,我猜测这是可能的,但我不确定。 你需要阅读反思 - 你可以动态地动态构建和编译程序集,所以我想你能够做你想做的事情 - 或者足够接近的事情。
对不起 - 你说出问题的方式让你有点难以理解你想做什么。忽略你想做的技术细节(注入一个函数) - 你实际上想要实现的是什么?