文字列に格納された名前で関数
を呼び出す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 サイトの他の関連記事を参照してください。