ホームページ >バックエンド開発 >C++ >C#で動的に解決されたタイプ変数を使用して、一般的なメソッドを呼び出すにはどうすればよいですか?

C#で動的に解決されたタイプ変数を使用して、一般的なメソッドを呼び出すにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-03 08:15:10917ブラウズ

How Can I Invoke Generic Methods with Dynamically Resolved Type Variables in C#?

動的タイプのタイプ変数C#Generication Methodを使用

一般的な方法を使用する場合、コンパイル時にパラメーターのタイプに遭遇することがよくありますが、ランタイム中にタイプパラメーターを動的に決定します。反射は、この課題に対処するための強力なソリューションを提供します。

遺伝的に遺伝的に生成された溶液

myType変数に保存されているタイプを使用して汎用メソッドgenericmedhod

を呼び出すには、次の方法を使用できます。

反射方法を使用したMethodInfo
    MethodInfo:
  1. <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));</code>
  2. 一般的な方法を構築するためのタイプパラメーターを提供します:
  3. <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
  4. コンストラクターの一般的な方法を呼び出してください:
  5. <code class="language-csharp">generic.Invoke(this, null);</code>
  6. staticメソッドstaticmethodソリューション
を呼び出すには、同様の手順に従ってください。

静的なジェネリックメソッドを取得するためのMethodInfo:

  1. [型パラメーターの使用汎用法]を使用してください:

    <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));</code>
  2. コンストラクターの一般的な方法を呼び出します。これは、静的な方法であるため、nullは最初のパラメーターとして渡されます。

    <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
  3. c#4と単純化されたダイナミックキーワード

    反射は一般的な方法を呼び出すための強力なソリューションを提供しますが、モデルコードがかなり多く含まれる場合があります。ただし、C#4から始めて、動的キーワードを使用してこのプロセスを簡素化できます。タイプの推論が利用可能な場合、動的を使用すると、必要なコードを大幅に削減できます。
    <code class="language-csharp">generic.Invoke(null, null);</code>

以上がC#で動的に解決されたタイプ変数を使用して、一般的なメソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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