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# :

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;
}
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
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;
}
J'ai mi les sources complètes de mon projet sur le site suivant :
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.