リフレクションを使用してパラメータを指定してメソッドを呼び出す
リフレクション メカニズムにより、開発者は実行時にアセンブリの内部構造にアクセスできます。一般的な使用例は、パラメーターを使用してメソッドを呼び出すことです。ただし、このタスクを実行しようとすると問題が発生するユーザーもいます。
そのような問題の 1 つは、パラメーターを指定してメソッドを呼び出すときに発生する「オブジェクトがターゲットの型と一致しません」エラーです。提供されたコードは問題を示しています。パラメータなしでメソッドを呼び出すと機能しますが、文字列パラメータを指定してメソッドを呼び出そうとすると例外が発生します。
このエラーを解決するには、methodInfo
がメソッド自体を表すのに対し、classInstance
はメソッドが配置されているクラスの新しいインスタンスを表すことに留意することが重要です。パラメーターを使用してメソッドを呼び出す場合、正しい構文は次のとおりです:
<code class="language-csharp">result = methodInfo.Invoke(classInstance, parametersArray);</code>
このコード行では、classInstance
が最初の引数として渡され、メソッドを呼び出すインスタンスを示します。 parametersArray
メソッドに渡される実際のパラメータが含まれます。
この簡単な調整を行うことで、開発者はリフレクションを使用してパラメーターを指定してメソッドを正常に呼び出すことができます。
以上がリフレクションを使用してパラメーターを含むメソッドを正しく呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。