1. ホーム
  2. .net

[解決済み】現在実行中のメソッドの名前を見つけるためにリフレクションを使用できますか?

2022-04-21 04:14:24

質問

タイトルの通りです。リフレクションは現在実行されているメソッドの名前を教えてくれますか?

ハイゼンベルグ問題があるので、そうではないと思いたいのですが。 現在のメソッドが何であるかを変えずに、現在のメソッドを教えてくれるメソッドをどのように呼び出すのでしょうか? しかし、誰かが私の間違いを証明してくれることを期待しています。

更新してください。

  • その2:これは、プロパティのコード内部を見るのにも使えるのでは?
  • その3:性能はどうなるのか?

最終結果

MethodBase.GetCurrentMethod()について学びました。 また、スタックトレースを作るだけでなく、必要なフレームだけを作ることができることを知りました。

これをプロパティ内で使うには、.Substring(4)をとって「set_」または「get_」を削除するだけです。

どのように解決するのですか?

.NET 4.5以降では、この他に [CallerMemberName] を指定します。 .

例:プロパティセッター(その2に答えるため)。

protected void SetProperty<T>(T value, [CallerMemberName] string property = null)
{
    this.propertyValues[property] = value;
    OnPropertyChanged(property);
}

public string SomeProperty
{
    set { SetProperty(value); }
}

コンパイラは、呼び出し先で一致する文字列リテラルを提供するので、基本的にパフォーマンスのオーバーヘッドはありません。