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 に答える