Bonjour,

Je vais essayer de vous exposer aussi clairement que possible mon problème.

J'ai une dll avec :
- une interface IPlugin du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public interface IPlugin
{
   int Add(int a, int b);
}
- une classe Class1
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;
    }
}
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
   public class Factory
    {
        public Factory()
        {
 
        }
        static public IPlugin Create()
        {
            IPlugin plugin = new Class1();
            return plugin;
        }
    }
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.
Seulement, j'ai à chaque fois un problème de cast du style
Impossible d'effectuer un cast d'un objet de type 'Class1' en type 'IPlugin'.
J'ai essayer de passer un parametre en reférence a ma fonction Create, d'utiliser Activator.CreateInstance mais rien ne change.

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.