リフレクションを使用して 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 サイトの他の関連記事を参照してください。