Créer une nouvelle instance à partir du type en C#
Ce didacticiel abordera les méthodes de création d’une nouvelle instance d’un type de données donné au moment de l’exécution en C#.
Créer une nouvelle instance à partir du type avec la classe Activator
en C#
Si nous voulons créer une nouvelle instance d’un type de données à l’exécution et ne connaissons pas le type de données, nous pouvons utiliser la classe Activator
et la classe Type
pour atteindre cet objectif. La classe Activator
fournit des méthodes pour créer des instances d’objets à partir de types en C#. La méthode Activator.CreateInstance()
est utilisée pour créer une instance d’un type spécifié avec le constructeur qui convient le mieux au type spécifié en C#. La classe Type
représente un type de données en C#. Nous pouvons utiliser la classe Type
pour déterminer le type de données inconnu dans ce scénario. L’exemple de code suivant nous montre comment créer une nouvelle instance d’un type de données à l’exécution sans connaître le type de données en utilisant la classe Activator
et la classe Type
en C#.
using System;
namespace new_object_from_type {
class Program {
static void Main(string[] args) {
int i = 123;
Type t = i.GetType();
Object n = Activator.CreateInstance(t);
n = 15;
Console.WriteLine(n);
}
}
}
Production:
15
Dans le code ci-dessus, nous avons créé une instance de type int32
au runtime sans spécifier le type de données avec la méthode Activator.CreateInstance()
en C#. Dans un premier temps, nous avons déterminé le type de la variable i
avec la méthode i.GetType()
en C#. Ensuite, nous avons créé une instance de ce type avec la méthode Activator.CreateInstance()
. La méthode Activator.CreateInstance()
trouve automatiquement le meilleur constructeur pour le type de données et crée une instance avec lui. Nous avons alors initialisé la nouvelle instance n
avec la valeur 15
et l’avons imprimée.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn