Bonjours à tous,
Je travail actuellement sur le projet d'une application modulaire, qui pourrait charger et décharger des plug-ins à volonté…..
J'ai trouver un exemple qui correspond exactement à ce que je veut faire, mais cette exemple est en C#...
Je l'es donc entièrement converti, ligne après ligne, du C# au C++/CLI…
Mais j'ai un problème avec l'instruction suivante; le programme compile, mais génère un exception : System.InvalidCastException: Impossible d'effectuer un cast d'un objet de type 'CommonTypes.AssyClass' en type 'CommonTypes.IFormAddOn'.
En C# :
Et une fois convertie en C++/CLI :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (IFormAddOnType != null) { //1 - instancier la classe object o = asm.CreateInstance(types[i].FullName); IFormAddOn formAddOn = o as IFormAddOn; //2 - invoker la méthode d'installation formAddOn.Install(form); foundInterface = true; }
J'ai mi les sources complètes de mon projet sur le site suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if (IFormAddOnType != nullptr) { //1 - instancier la classe Object^ o = assembly->CreateInstance(types[i]->FullName); IFormAddOn^ formAddOn = (IFormAddOn^)o; // IFormAddOn^ formAddOn = safe_cast<IFormAddOn^>(o); // génère la meme erreur !!! //2 - invoker la méthode d'installation formAddOn->Install(form); foundInterface = true; }
http://arobasse2.free.fr/PlugIn.zip
Merci à celui qui voudras bien m'aider, soit en trouvant une solution à mon problème, soit en m'indiquant une autre façon d'obtenir le même résultat…
Bonne continuation à tous, @ bientôt….
Jérémy.
Partager