ホームページ > バックエンド開発 > C++ > リフレクションを使用して C# で汎用オブジェクトを動的に作成するにはどうすればよいですか?

リフレクションを使用して C# で汎用オブジェクトを動的に作成するにはどうすればよいですか?

DDD
リリース: 2025-01-22 09:32:09
オリジナル
740 人が閲覧しました

How Can I Dynamically Create Generic Objects in C# Using Reflection?

リフレクションを使用して C# で汎用オブジェクトを動的に作成します

C# では、文字列型に基づいてオブジェクトを動的に作成する必要がある状況によく遭遇します。このアプローチでは、リフレクションを使用して明示的な型宣言を回避します。

次のクラス構造を考えてみましょう:

<code class="language-csharp">public class Item
{ }

public class Task<T>
{ }

public class TaskA<T> : Task<T>
{ }

public class TaskB<T> : Task<T>
{ }</code>
ログイン後にコピー

私たちの目標は、リフレクションを使用して TaskA または TaskB のインスタンスを動的に作成することです。型は事前にわからないため、「namespace.TaskA」や「namespace.TaskAB」などの型文字列に依存します。

リフレクションを使用すると、次のように実現できます:

<code class="language-csharp">var type = Type.GetType("namespace.TaskA`1"); // 将“namespace”替换为您实际的命名空间
Type[] typeArgs = { typeof(Item) };
var makeme = type.MakeGenericType(typeArgs);
object instance = Activator.CreateInstance(makeme);</code>
ログイン後にコピー

このメソッドは、指定された型文字列に基づいて TaskA のインスタンスを動的に作成します。ジェネリック クラスが複数の型を受け入れる場合は、次の例のように、型名を省略するときに必ずコンマを含めてください:

<code class="language-csharp">Type type = typeof(IReadOnlyDictionary);</code>
ログイン後にコピー

以上がリフレクションを使用して C# で汎用オブジェクトを動的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート