有没有办法知道简单函数的发件人?
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
任何想法?
答案 0 :(得分:4)
您的问题的解决方案是错误的。您不需要知道调用函数名称,您需要重构代码(如果您想稍后重命名该方法,或者从其他方法调用它?)。
默认添加一个布尔参数false
,但如果从true
调用该函数,则将其设置为FunctionA()
。
答案 1 :(得分:1)
正如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
答案 2 :(得分:0)
Console.WriteLine(new StackFrame(1, true).GetMethod().Name);
上面的代码应该为您提供调用方法名称。