2

出于日志记录的原因,我一直在使用 CompilerServices 库来获取调用函数的方法名称。

我想知道的是是否有可能获得调用类?我已经查看了所有属性,但没有成功。

直接来自微软

public void TraceMessage(string message,
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0)
{
    Trace.WriteLine("message: " + message);
    Trace.WriteLine("member name: " + memberName);
    Trace.WriteLine("source file path: " + sourceFilePath);
    Trace.WriteLine("source line number: " + sourceLineNumber);
}

我真的很想避免 StackFrame 堆。

4

2 回答 2

3

抱歉不行。Caller* 属性(至少目前)仅提供您列出的三个项目,但不提供类型。

如果您需要获取实际类型,则使用堆栈信息确实是唯一的方法。

于 2013-10-03T15:31:51.887 回答
1

不幸的是,没有办法做到这一点。您列出的属性集是呼叫者信息功能可用的完整功能集。这是一个详细页面的链接,其中涵盖了可用选项。类名不是其中之一。

http://msdn.microsoft.com/en-us/library/hh534540.aspx

于 2013-10-03T15:33:23.577 回答