Maison > développement back-end > C++ > Comment puis-je instancier des objets génériques avec des constructeurs paramétrés en C# ?

Comment puis-je instancier des objets génériques avec des constructeurs paramétrés en C# ?

Linda Hamilton
Libérer: 2025-01-09 12:07:43
original
798 Les gens l'ont consulté

How Can I Instantiate Generic Objects with Parameterized Constructors in C#?

Instanciation d'objet générique avec constructeur paramétré en C#

En C#, il est possible de créer des instances de types génériques avec des constructeurs paramétrés. Cependant, l'exemple de code fourni fournit une nouvelle méthode de constructeur sans paramètre pour la classe de base, ce qui n'est pas toujours pratique dans les scénarios réels.

Pour résoudre ce problème, une solution consiste à utiliser la classe Activator. L'extrait de code suivant illustre cette approche :

<code class="language-C#">return (T)Activator.CreateInstance(typeof(T), new object[] { weight });</code>
Copier après la connexion

Ce code utilise la méthode Activator.CreateInstance pour instancier un nouvel objet de type T. L'expression typeof(T) renvoie un objet Type du type générique. Le constructeur est appelé en passant les paramètres requis sous forme de tableau d'objets.

Il est important de noter que la contrainte new() sur un type générique n'est utilisée que pour garantir que le compilateur vérifie l'existence d'un constructeur public sans paramètre au moment de la compilation. Le mécanisme réel de création d’instance est toujours la classe Activator.

Cependant, il convient de considérer que s'appuyer sur la classe Activator peut introduire un certain degré d'odeur de code, et il est généralement recommandé d'éviter de telles exigences dans les versions actuelles de C#.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal