Variables dynamiques

Résolu
Bio3G Messages postés 7 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 août 2006 - 29 juil. 2006 à 23:59
Bio3G Messages postés 7 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 août 2006 - 14 août 2006 à 14:30
Bonjour à tous,


Je cherche une solution pour simuler des variables dynamiques en C#. Je crée une appli comportant un menu sous forme de TreeView, les fonctions sont stockées dans une base de données et je cherche la solution pour instancier une appli windows sans en connaître le nom dans le menu, c'est à dire d'avoir une méthode dont le composant seraient issus d'une lecture de BDD et passé en paramètre :  

public void Run_Appli (string Nom_de_appli)
{
     Nom_de_appli =
newNom_de_appli
();
       Nom_de_appli
.Show();
}


Si vous avez des idées, merci de me les soumettre, ça fait 2 semaines que je me casse la tête avec ça !!

 Alain Thébault

2 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
30 juil. 2006 à 00:10
Salut,

Tel que tu le décrit c'est impossible.
Tu vas devoir te tourner vers le mécanisme Reflection.
Commence tes recherches par Activator.CreateInstance, ça devrait te permettre de prendre le bon chemin :-)

/*
coq
MVP Visual C#
CoqBlog
*/
3
Bio3G Messages postés 7 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 août 2006
14 août 2006 à 14:30
Salut Coq,

Je te remercie pour ta réponse, à mon retour de vacances, j'ai cherché dans ce sens et grâce à toi j'ai trouvé !!
J'ai donc créé une méthode pour lancer une fenêtre sans en connaitre textuellement le nom et l'assembly que je récupère sous forme de string dans une base de données.
J'ai donc pu générer mon menu applicatif dynamique...

public
void Run_Process(
string pin_asbl,
string pin_proc){
   System.Runtime.Remoting.ObjectHandle wrk_obje System.Activator.CreateInstance(pin_asbl,pin_asbl + "." + pin_proc);   Form wrk_form (Form) wrk_obje.Unwrap();

   wrk_form.Show();

}
 
Encore merci...

 Alain Thébault
0
Rejoignez-nous