类名的编译器服务

本文关键字:服务 编译器 | 更新日期: 2023-09-27 18:33:58

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

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

直接来自微软:

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堆。

类名的编译器服务

不幸的是,没有。 Caller * 属性(至少目前)仅提供您列出的三个项目,而不提供类型。

如果您需要获取实际类型,使用堆栈信息实际上是到达那里的唯一方法。

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

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