FAQ C++/CLI et VC++.NetConsultez toutes les FAQ

Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013 

 
OuvrirSommaireIntéraction du C++/CLI avec le framework .NetInstanciation dynamique

Pour instancier une classe à partir d'un type, il vous faudra utiliser la classe Activator :

 
Sélectionnez
// Récupération du type à  instancier dynamiquement
Type ^objType = Test::typeid;
// Instance dynamique à  partir du type donné
Object ^objInstanceDynamique = Activator::CreateInstance(objType);
// Casting de l'objet
Test ^objTest = (Test^)objInstanceDynamique;
Créé le 9 octobre 2008  par Jérôme Lambert, nico-pyright(c)

Lien : System.Activator

Pour instancier un classe à partir d'une chaîne de caractères, il vous faudra dans un premier temps transformer cette châine en un objet de type Type. A partir de l'objet Type obtenu, vous pourrez créer une instance grâce à la classe Activator :

 
Sélectionnez
// Récupération du type à instancier dynamiquement à partir d'une chaîne de caractères
Type ^objType = Type::GetType("Test");
// Vérification si le type a bien été retrouvé
if (objType != nullptr)
{
	// Instance dynamique à partir du type donné
	Object ^objInstanceDynamique = Activator::CreateInstance(objType);
	// Casting de l'objet
	Test ^objTest = (Test ^)objInstanceDynamique;
}
else
{
	Console::WriteLine("Le type semble être incorrect!");
}
Créé le 9 octobre 2008  par Jérôme Lambert, nico-pyright(c)

Lien : System.Activator
Lien : System.Type

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.