ホームページ > バックエンド開発 > C++ > C# でリフレクションを使用して特定の名前空間で静的メソッドを呼び出すにはどうすればよいですか?

C# でリフレクションを使用して特定の名前空間で静的メソッドを呼び出すにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-29 22:17:27
オリジナル
427 人が閲覧しました

How Can I Invoke Static Methods in a Specific Namespace Using Reflection in C#?

リフレクションを使用した静的メソッドの呼び出し

リフレクションは、実行時に .NET 型とそのメンバーにアクセスして操作するための強力なメカニズムを提供します。そのようなタスクの 1 つは、クラスの静的メソッドを呼び出すことです。この記事では、リフレクションを使用して特定の名前空間 (mySolution.Macros) で静的メソッドを呼び出すという具体的なニーズについて説明します。

Background

提供されたコード スニペットの目標は次のとおりです。特定の名前空間内の静的クラスのリストを反復処理し、それらの Run メソッドを呼び出します。ただし、メソッドは静的であるため、インスタンスを作成してからメソッドを呼び出すという標準的なアプローチは適用できません。

解決策

静的メソッドを呼び出すための鍵反省とは、静的メソッドでは MethodInfo.Invoke に渡される最初の引数が無視されることを理解することです。したがって、以下の変更されたコードは静的メソッドを正常に呼び出します:

foreach (var tempClass in macroClasses)
{
    // using reflection I will be able to run the method as:
    tempClass.GetMethod("Run").Invoke(null, null);
}
ログイン後にコピー

コメントで述べたように、GetMethod:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
ログイン後にコピー
を呼び出す前にメソッドが実際に静的であることを確認することをお勧めします。

以上がC# でリフレクションを使用して特定の名前空間で静的メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート