回答
更好地使用基类: System.Reflection.MethodBase。GetCurrentMethod(); – marstone 2014-01-06 07:34:32
@marstone - 你能解释一下为什么这么好吗? – PunkyGuy 2014-06-23 14:32:01
@PunkyGuy有人说:“虽然这两个调用具有完全相同的效果,但在实际定义的类的子类上调用共享函数通常是一个坏主意。参考:http://bytes.com/topic/visual-basic-net/answers/457334-methodinfo-methodbase – marstone 2014-06-24 12:02:14
其他方法都接近了什么要求,但他们不返回字符串值。但这:
Dim methodName$ = System.Reflection.MethodBase.GetCurrentMethod().Name
宾果!为我解决 – 2018-02-01 18:59:02
Dim methodName As String = System.Reflection.MethodBase.GetCurrentMethod().Name
要保证任何提出这个问题的答案,实际上在运行时正常工作(System.Reflection.MethodBase.GetCurrentMethod().Name
),你需要添加一个属性。有没有编译器/运行的标志,我知道,突破此方法:
功能你试图让must be marked
- F#名称
[<System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)>]
VB:
<System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)>
C#:
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
此外,时下,有在VB中nameof()
操作,C#(and maybe F# soon) 这对于你的情况是nameof(SomeMethod)
(我相信语法将是VB和C#这里是相同的)
另一种方法是使用CallerMemberNameAttribute来自System。Runtime。Compiler Services命名空间来填充可选参数。例如...
Private Function GetMethodName(<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing) As String
Return memberName
End Function
的功能将被调用你所期望的......
Public Sub DoSomeWork()
Dim methodName As String = GetMethodName()
Console.WriteLine($"Entered {methodName}")
' Do some work
End Sub
而不是“只是”检索方法的名称,功能也可能利用方法检索名称以进一步简化代码。例如...
Private Sub TraceEnter(
<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing)
Console.WriteLine($"Entered {memberName}")
End Sub
...这可能是这样使用...
Public Sub DoSomeWork()
TraceEnter()
' Do some work
End Sub
在CompilerServices命名空间中的其他属性可以以类似的方式被用于检索的完整路径(在编译时间)的源文件和/或呼叫的线路号码。有关示例代码,请参阅CallerMemberNameAttribute文档。
- 1. 获取当前MembershipProvider名称
- 2. 获取当前正在执行的方法的名称
- 3. 获取当前正在执行的当前线程的方法名称
- 4. 如何在squeak中获取当前方法的名称?
- 5. 如何在Delphi 7中获取当前方法的名称?
- 6. 在运行时获取当前调用方法的名称
- 7. 在dotnet核心中获取当前执行方法的名称
- 8. android获取多态方法的当前活动名称
- 9. 获取当前的方法名称包含/要求
- 10. py.test:如何从setup方法获取当前测试的名称?
- 11. 在C++中获取当前方法的名称
- 12. 如何在静态方法中获取当前类的名称?
- 13. 获取当前执行方法的名称
- 14. 如何获取当前控制器的名称和方法?
- 15. 从异步函数中获取当前方法名称?
- 16. 获取当前$ _GET变量的名称
- 17. 获取当前类的名称
- 18. 获取当前表格的名称
- 19. 获取当前VBA函数的名称
- 20. 获取当前类的名称
- 21. 获取当前组件的名称
- 22. 获取当前课程的名称?
- 23. 获取当前环境名称
- 24. android获取当前位置名称
- 25. 获取当前模板名称?
- 26. DB获取当前数据库名称
- 27. modx php获取当前页面名称
- 28. Pysphere获取当前快照名称
- 29. 获取当前文件夹名称
- 30. 获取当前字段名称
看看这个:http://geekswithblogs.net/opiesblog/archive/2006/06/29/83654.aspx – 2010-01-12 18:11:57
这实际上是如何获得调用方法的名称,而不是当前正在执行的方法。尽管如此,仍然很酷! – 2010-01-12 18:21:24
[可以使用反射来查找当前正在执行的方法的名称?](http://stackoverflow.com/questions/44153/can-you-use-reflection-to-find-the-name-of当前执行方法) – 2017-01-25 22:52:36