ホームページ >バックエンド開発 >C++ >実行時にジェネリック型インスタンスを動的に作成するにはどうすればよいですか?

実行時にジェネリック型インスタンスを動的に作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-13 07:17:42217ブラウズ

How Can I Dynamically Create a Generic Type Instance at Runtime?

実行時にジェネリック型のインスタンスを動的に作成します

場合によっては、実行時に決定された型に基づいてジェネリック型のインスタンスを動的に作成することが必要になる場合があります。ジェネリック型は通常コンパイル時に定義されるため、これは困難な場合があります。

これを達成する 1 つの方法は、リフレクションを利用することです。これは、ターゲット型を含む変数を使用してジェネリック型インスタンスを作成できる回避策です:

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>

MakeGenericType メソッドは、単一の Type パラメーターを受け入れ、指定された型パラメーターを持つジェネリック型を表す新しい Type オブジェクトを返します。この場合、doubleType を渡してターゲットのタイプを指定します。

特定のジェネリック型を取得した後、Activator.CreateInstance メソッドを使用してこの型のオブジェクトをインスタンス化できます。このメソッドは、リフレクションを使用して、指定されたオブジェクト タイプの新しいインスタンスを動的に作成します。

このアプローチを使用すると、実行時に決定された型に基づいてジェネリック型のインスタンスを動的に作成できるため、柔軟性とコードの適応性が向上します。 ジェネリック型 typeof(List) を正しく表すには、typeof(List<>)List<T> に変更する必要があることに注意してください。

以上が実行時にジェネリック型インスタンスを動的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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