概要
本文用示例讲述VB.NET(VB 2008, VB 2005) 如何得到当前过程(current procedure)和调用的类(current Class) 的名称。
主要用到 System.Diagnostics.StackTrace 和 System.Diagnostics.StackFrame,以及 StackFrame的方法:GetFileName,GetMethod.Name, GetMethod.ReflectedType.FullName。
示例代码
Imports System.Diagnostics Public Class Class2 Public Sub WriteToFile(ByVal Log As String) Dim clsName As String = ""
Dim mtdName As String = ""
Dim codeFilePath As String = "" Dim st As New StackTrace(True)
Dim sf As StackFrame = st.GetFrame(0) '重点:如果提当前方法的名字为GetFrame(0),如果提调用当前方法的方法的名字为GetFrame(1),依次类推.
mtdName = sf.GetMethod.Name
Debug.WriteLine(mtdName) clsName = sf.GetMethod.ReflectedType.FullName
Debug.WriteLine(clsName) codeFilePath = sf.GetFileName
Debug.WriteLine(codeFilePath)
End Sub End Class
在 Class2里面,我们写了一些代码得到当前过程的名称,当前类的方法的名称,以及当前代码文件的路径。
要点
1. 要 Imports System.Diagnostics
。
2. 要用到 StackTrace
(System.Diagnostics.StackTrace) 和 StackFrame
(System.Diagnostics.StackFrame)。
3. 要用到 StackTrace.GetFrame(0)
。
4. StackFrame.GetMethod.Name
得到当前过程名称 (current method name)。
5. StackFrame.GetMethod.ReflectedType.FullName
得到当前类的全名 (current class name)。如果只要当前类的名称,可以用 Name
,而不是FullName
。
6. StackFrame.GetFileName
得到代码文件路径。