0
Funcをパラメータとして引数を呼び出し、結果を出力する関数があります。ロギング目的のために、ラムダ式が実行されたときに実際に呼び出されている関数の名前にアクセスできるようにするとよいでしょう。コンパクトなフレームワークでこれを行う方法はありますか?パラメータとして渡されるデリゲートのメソッド名を取得する(Compact Framework)
Private Function tryWithLogging(ByVal moveFunc As Func(Of Boolean)) As Boolean
Try
moveFunc.Invoke()
Dim nameOfMethod as String = '??????
Console.WriteLine("Invoked " & nameOfMethod)
Catch ex As Exception
End Try
End Function
使用例:
tryWithLogging(Function() myFunction([arbitrary params])
'desired output: "Invoked myFunction"
は、ここで私は名前を取得しようとしてきたものだ:
moveFunc.Method.Name 'returns whatever the compiler decided to name the lambda
New StackTrace().GetFrame(1).GetMethod().Name 'works, but is not available on CF
私も代わりExpression(Of Func(Of Boolean))
を渡し、そこから名前を取得しようとしましたが、 System.Linq.Expressions
もCFでは利用できません。
コンパクトなフレームワーク3.5のシャックル内のラムダによって呼び出されている関数の名前を取得する方法はありますか?
これは何か? https://stackoverflow.com/questions/12098267/how-can-i-get-the-name-of-the-calling-function-in-c?noredirect=1&lq=1 –
@LBおそらく私はあなたのリンクを誤解していますしかし、私は 'CallerMemberName'が私を助けてくれるとは思わない。呼び出す関数の名前ではなく、ラムダで呼び出されるメソッドの名前が必要です。 – Cobalt