Bonjour,
Je vais essayer de vous exposer aussi clairement que possible mon problème.
J'ai une dll avec :
- une interface IPlugin du style
- une classe Class1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface IPlugin { int Add(int a, int b); }
ainsi qu'une classe Factory avec une méthode Create me retournant une instance de Class1 sous forme d'IPlugin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class Class1 : IPlugin { public Class1() { Console.WriteLine("--- constructor ---"); } public int Add(int a, int b) { return a + b; } }
Dans un projet exploitant cette dll, j'essai de récupérer la valeur de retour de la méthode Create et de le stocker dans un IPlugin grace a invoke.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Factory { public Factory() { } static public IPlugin Create() { IPlugin plugin = new Class1(); return plugin; } }
Seulement, j'ai à chaque fois un problème de cast du styleJ'ai essayer de passer un parametre en reférence a ma fonction Create, d'utiliser Activator.CreateInstance mais rien ne change.Impossible d'effectuer un cast d'un objet de type 'Class1' en type 'IPlugin'.
Le but serait de faire un système de plugin a base de dll.
J'ai cherché sur google avec acharnement mais je ne suis pas arrivé à résoudre ce problème.
Quelqu'un aurait-il une solution à me proposer ?
N'hésitez pas à me poser des questions si un des points ne vous semble pas clair.
Merci d'avance.
Partager