Maison > développement back-end > C++ > Comment puis-je créer dynamiquement des objets génériques en C# à l'aide de Reflection ?

Comment puis-je créer dynamiquement des objets génériques en C# à l'aide de Reflection ?

DDD
Libérer: 2025-01-22 09:32:09
original
790 Les gens l'ont consulté

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

Utiliser la réflexion pour créer dynamiquement des objets génériques en C#

En C#, nous rencontrons souvent des situations où nous devons créer dynamiquement des objets basés sur des chaînes de types. Cette approche utilise la réflexion pour éviter les déclarations de type explicites.

Considérez la structure de classe suivante :

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

public class Task<T>
{ }

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

public class TaskB<T> : Task<T>
{ }</code>
Copier après la connexion

Notre objectif est d'utiliser la réflexion pour créer dynamiquement une instance de TaskA ou TaskB. Comme le type n'est pas connu à l'avance, nous nous appuierons sur la chaîne de type, telle que "namespace.TaskA" ou "namespace.TaskAB".

En utilisant la réflexion, nous pouvons y parvenir comme suit :

<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>
Copier après la connexion

Cette méthode crée dynamiquement une instance de TaskA basée sur la chaîne de type spécifiée. Si une classe générique accepte plusieurs types, veillez à inclure la virgule lorsque vous omettez le nom du type, comme dans l'exemple suivant :

<code class="language-csharp">Type type = typeof(IReadOnlyDictionary);</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal