0

有没有办法知道一个简单函数的发送者?

 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

有任何想法吗 ?

4

3 回答 3

4

您的问题的解决方案是错误的。你不需要知道调用函数的名字,你需要重构你的代码(如果你想稍后重命名方法,或者从另一个方法调用它怎么办?)。

例如添加一个默认的布尔参数false,但true如果您从FunctionA().

于 2013-02-12T12:09:55.290 回答
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
于 2013-02-12T12:18:08.200 回答
0
Console.WriteLine(new StackFrame(1, true).GetMethod().Name);

上面的代码应该给你调用方法的名字。

于 2013-02-12T12:06:57.963 回答