获取调用方法的名称

zeo*_*ash 4 vb.net reflection

基本上我有一个Web服务,我试图将某种用法登录.为此,我创建了一个带有日志记录方法的类.我在服务上实例化类,然后在每个Web方法中调用日志记录方法.

我试图找到一种方法来获取调用loggong方法的方法的名称

Public sub tstmethod
log_object.log_method
end sub
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我正在寻找的返回名称是"tstmethod"

我见过的所有地方都说要么使用

Dim stackframe As New Diagnostics.StackFrame
Return stackframe.GetMethod.Name.ToString
Run Code Online (Sandbox Code Playgroud)

或者使用

Dim stackframe As New Diagnostics.StackFrame
Return stackframe.GetMethod.DeclaringType.FullName
Run Code Online (Sandbox Code Playgroud)

我在日志记录方法中调用

getmethod.name.tostring返回日志记录方法的名称

getmethod.declaringtype.fullname返回日志记录类的名称

无论我做什么,我找不到一种获取调用日志方法的方法名称的方法"tstmethod"

Vin*_*jip 13

您需要StackFrame使用适当的构造函数实例化.例如,

Dim stackframe As New Diagnostics.StackFrame(1)
Run Code Online (Sandbox Code Playgroud)

将跳过一个堆栈帧(记录方法本身)并获取该方法的调用者的帧.

也就是说 - 如果可能的话,我强烈建议使用标准的日志记录机制,例如log4net.


Er.*_*idy 8

我认为以上陈述可以分为一行:

MsgBox((New System.Diagnostics.StackTrace).GetFrame(1).GetMethod.Name)
Run Code Online (Sandbox Code Playgroud)

这将显示与调用方法名称一样的消息框.