次のクラスとメソッドを使用します。
_public class Foo
public Foo Create(string bar) {
return new Foo(bar);
}
_
したがって、「作成」を取得することは明らかです:nameof(Foo.Create)
リフレクションを使用して実行時にパラメーターを読み取る以外に、「バー」を取得する方法はありますか?
いいえ。nameof
を使用してメソッドの外部からパラメータ名を取得する方法はありません。呼び出し側で名前が必要な場合、nameof
はメソッドパラメーターでは機能しません(呼び出し先では明らかに機能します)。リフレクションのようなあなたが言及した他の方法はうまくいきます。
var parameterNames = typeof(Program)
.GetMethod(nameof(Program.Main)).GetParameters()
.Select(p => p.Name);
私はこれが遅い返事であることを知っています、しかし私は反省を必要としない問題へのかなり単純で適度にエレガントな解決策を見つけました。
このようにクラスFoo
を変更します...
public class Foo
public static string CreateName = nameof(Create);
public Foo Create(string bar) {
return new Foo(bar);
}
}
...その後、他のクラスで行うことができます...
Foo.CreateName
...メソッドの名前が表示されます。