ホームページ > バックエンド開発 > C++ > 文字列として保存された名前を使用して、C#関数を呼び出すにはどうすればよいですか?

文字列として保存された名前を使用して、C#関数を呼び出すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-26 02:11:08
オリジナル
262 人が閲覧しました

How Can I Call a C# Function Using Its Name Stored as a String?

文字列に格納された名前で関数

を呼び出す

PHP を含む多くのプログラミング言語では、文字列参照を介して関数を動的に呼び出すことができます。 C# は豊富なリフレクション機能を提供するため、この機能は .NET Framework でも利用できます。

動的関数呼び出しにリフレクションを使用する

C# で文字列によって識別される関数を呼び出すには、リフレクションを使用できます。次のコード スニペットはその方​​法を示しています。

<code class="language-csharp">Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);</code>
ログイン後にコピー

このコードでは、呼び出されるメソッドの名前が変数TheCommandStringに格納されています。 Type メソッドは、現在のオブジェクトの thisType インスタンス (GetMethod) を取得することで、名前によるメソッドへの参照を取得するために使用されます。最後に、Invoke メソッドを使用してメソッドを実行し、ターゲット オブジェクト (this) と必要なパラメーター (userParameters) を渡します。

プライベート メソッドへのアクセス

呼び出されるメソッドは、リフレクション操作のコンテキストでアクセス可能である必要があることに注意することが重要です。デフォルトでは、private アクセス修飾子を使用するメソッドには、このメソッドを使用してアクセスできません。この問題を解決するには、次のように GetMethod 呼び出しに BindingFlags パラメータを含めます。

<code class="language-csharp">MethodInfo theMethod = thisType
    .GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);</code>
ログイン後にコピー
この変更により、

および NonPublic バインディング フラグが指定され、アクセス修飾子に関係なくメソッドを呼び出すことができるようになります。 Instance

以上が文字列として保存された名前を使用して、C#関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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