【问题标题】:Find the sender of a simple function [duplicate]查找一个简单函数的发送者[重复]
【发布时间】:2013-02-12 20:30:38
【问题描述】:

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

 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

有什么想法吗?

【问题讨论】:

标签: asp.net vb.net


【解决方案1】:

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

例如添加一个布尔参数,默认为false,但如果您从FunctionA() 调用函数,请将其设置为true

【讨论】:

    【解决方案2】:

    正如 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
    

    【讨论】:

    • 但是不要称它为bFromA,而是给它一个描述其行为的名称。例如:hideReportHeaders,或任何它的作用。
    • @CodeCaster 当然,但我不知道 OP 试图做什么。
    【解决方案3】:
    Console.WriteLine(new StackFrame(1, true).GetMethod().Name);
    

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

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 2013-11-22
      • 2017-11-17
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多