ホームページ >バックエンド開発 >C++ >反射を使用して、動的型パラメーターを使用してジェネリックメソッドを呼び出す方法は?

反射を使用して、動的型パラメーターを使用してジェネリックメソッドを呼び出す方法は?

DDD
DDDオリジナル
2025-02-03 07:57:13236ブラウズ

How to Use Reflection to Invoke Generic Methods with Dynamic Type Parameters?

ジェネリックメソッドを呼び出す反射ダイナミックの使用

タイプパラメーターはコンパイル時に不明であるため、動的呼び出し方法を反映する必要があります。この目標を達成するには、次の手順に従ってください

インスタンスジェネリックメソッドを呼び出します スクランメソッド宣言クラスのタイプを取得します。

methodinfo反射検索インスタンスメソッドを使用します。

makegegnericmethodで指定されたタイプパラメーターを使用して、汎用法を構築します。
  1. Invokeを使用して、インスタンスの汎用メソッドを呼び出します。
  2. 静的ジェネリックメソッドを呼び出してください 反射構築の静的方法を使用した
  3. methodinfo。
makegegnericmethodで指定されたタイプパラメーターを使用して、汎用法を構築します。
<code class="language-csharp">Type myType = FindType(typeName);
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);</code>

Invokeを使用して静的汎用法を呼び出します。

    静的方法については、最初のパラメーターとして呼び出すためにnullが渡されることに注意してください。
  1. その他の予防策
  2. C#4以降のバージョンの場合、動的タイプを使用すると、このプロセスを簡素化できます。ただし、いくつかのタイプの推論(提供された例など)では、反射がまだ必要になる場合があります。

以上が反射を使用して、動的型パラメーターを使用してジェネリックメソッドを呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。