Bonjour à tous,
Je souhaiterais pouvoir passer un object ToolStripMenuItem d'un domaine à l'autre. Lors de la récupération de celui-ci tout va bien à prioris mais lors de l'utilisation j'obtient cette erreur:
Je vais quand même vous expliquez mon objectif et comment je l'effectue.Une exception non gérée du type 'System.Runtime.Serialization.SerializationException' s'est produite dans System.Windows.Forms.dll
Informations supplémentaires : Le type 'System.Windows.Forms.PropertyStore' dans l'assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' n'est pas marqué comme sérialisable.
Tout d'abord j'ai 3 classes dans 2 projets différents.
Dans le projet principal j'ai une classe toute simple qui n'est rien d'autre qu'un formulaire winforms qui va créer un nouveau AppDomain et charger dans celui-ci une classe Loader. La classe Loader va me servir à charger une dll externe (un plugin) qui contient la 3ème classe se trouvant dans le second projet.
Dans ce second projet la classe a 2 fonctions:
- Retourner le nom du plugin (qui en réalité est un champs)
- Retourner un objet menu
et utilise également l'interface IPlugin
Pour faire fonctionner tout ça, toutes les classes se trouvant dans le nouveau AppDomain sont dérivée de MarshalByRefObject qui est obligatoire (sauf si on sérialise mais chez moi cella ne fonctionne pas).
La classe Loader contient également une fonction LoadPlugin qui renvoie une interface IPlugin.
Lorsque dans mon formulaire principal j'effectue ce code:
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 IPlugin plugin = Loader.LoadPlugin("pluginName"); string name = plugin.Name; // fonctionne MessageBox.Show("Plugin name: " + name); // fonctionne ToolStripMenuItem mnu = plugin.GetMenu(); // fonctionne (je ne suis pas sur de recevoir un object correct mais la ligne de code fonctionne) MenuStrip1.DropDownItems.Add(mnu); // sur cette ligne-ci l'erreur ci-dessus s'affiche
Bonne journée
Partager