找到一个简单函数的发送者

时间:2013-02-12 12:05:41

标签: asp.net vb.net

有没有办法知道简单函数的发件人?

 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

任何想法?

3 个答案:

答案 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);

上面的代码应该为您提供调用方法名称。