有没有办法知道一个简单函数的发送者?
Public Function functionA() As Integer
functionB()
End Function
Public Function functionB() As Integer
' i need to do another processing if it comes from functionA
End Function
有任何想法吗 ?
您的问题的解决方案是错误的。你不需要知道调用函数的名字,你需要重构你的代码(如果你想稍后重命名方法,或者从另一个方法调用它怎么办?)。
例如添加一个默认的布尔参数false
,但true
如果您从FunctionA()
.
正如 CodeCaster 所说,您应该以不同的方式解决您的问题,这里有一个示例代码:
Public Function functionA() As Integer
Call functionB(True)
End Function
Public Function functionB(Optional bFromA As Boolean = False) As Integer
If bFromA Then
...
Else
...
End If
End Function
您甚至可以创建自己的一组选项,以便使用不同的处理选项从不同的地方调用您的函数:
Public Enum OptionTypeB
DefaultOpt
OptionName1
OptionName2
OptionName3
End Enum
Public Function functionB(Optional bOptions As OptionTypeB = OptionTypeB.DefaultOpt) As Integer
....
End Function
Console.WriteLine(new StackFrame(1, true).GetMethod().Name);
上面的代码应该给你调用方法的名字。