単純な関数の送信者を知る方法はありますか?
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
何か案は ?
あなたの問題の解決策は間違っています。呼び出し元の関数名を知る必要はありません。コードをリファクタリングする必要があります (メソッドの名前を後で変更したり、別のメソッドから呼び出したりする場合はどうすればよいでしょうか?)。
たとえば、false
デフォルトでブール値パラメータを追加しtrue
ますが、 から関数を呼び出す場合はに設定しますFunctionA()
。
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
Console.WriteLine(new StackFrame(1, true).GetMethod().Name);
上記のコードは、呼び出し元のメソッド名を示しているはずです。