Obtenir une nouvelle instance d'objet à partir d'un type

On ne connaît pas toujours le Type d'un objet au moment de la compilation, mais on peut avoir besoin de créer une instance du Type. Comment obtenir une nouvelle instance d'objet à partir d'un Type ?

请先 登录 后评论

3 réponses

tags2k

Une implémentation de ce problème consiste à tenter d'appeler le constructeur sans paramètre du Type :

public static object GetNewObject(Type t)
{
    try
    {
        return t.GetConstructor(new Type[] { }).Invoke(new object[] { });
    }
    catch
    {
        return null;
    }
}

Voici la même approche, contenue dans une méthode générique :

public static T GetNewObject<T>()
{
    try
    {
        return (T)typeof(T).GetConstructor(new Type[] { }).Invoke(new object[] { });
    }
    catch
    {
        return default(T);
    }
}
请先 登录 后评论
Konrad Rudolph
ObjectType instance = (ObjectType)Activator.CreateInstance(objectType);

La classe Activator a une variante générique qui rend cela un peu plus facile :

ObjectType instance = Activator.CreateInstance<ObjectType>();
请先 登录 后评论
Brady Moritz

Le T t = new T(); générique ne fonctionnerait-il pas ?

请先 登录 后评论
  • 30 abonnés
  • 0 favoris,358 Feuilleter
  • tags2k posée à 2023-03-01 16:44