[解決済み] リフレクションを使用して呼び出しメソッド名と型を取得するにはどうすればよいですか?重複
2022-04-23 09:27:14
質問
重複の可能性があります。
現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?
呼び出したメソッドの名前と、呼び出したメソッドを含むクラスの名前を取得するメソッドを書きたいのですが、どうすればいいですか?
C#のリフレクションで可能でしょうか?
どのように解決するのですか?
public class SomeClass
{
public void SomeMethod()
{
StackFrame frame = new StackFrame(1);
var method = frame.GetMethod();
var type = method.DeclaringType;
var name = method.Name;
}
}
さて、このような別のクラスがあるとします。
public class Caller
{
public void Call()
{
SomeClass s = new SomeClass();
s.SomeMethod();
}
}
名称 は "Call"となります。 タイプ は "Caller"となります。
UPDATE: 2年後、私はまだこれにupvoteを得るので
.NET 4.5では、より簡単にこれを行うことができるようになりました。これは
CallerMemberNameAttribute
.
先ほどの例で行くと
public class SomeClass
{
public void SomeMethod([CallerMemberName]string memberName = "")
{
Console.WriteLine(memberName); // Output will be the name of the calling method
}
}
関連
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] あるコンストラクタを別のコンストラクタから呼び出す
-
[解決済み] コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] Java のメソッド名を文字列で指定した場合、どのように呼び出すのですか?
-
[解決済み】Reflection - プロパティで属性名と値を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] 現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?