Bonjour,

J'ai un projet customisable.

J'expose une interface, et j'aimerais, en fonction d'un paramètre, d'un choix utilisateur, etc. pouvoir appeler la DLL qui implémente l'interface qui va bien.

Voici quelques extraits de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
// Project dependencies
using CommonTools; // Défini l'interface IExtractor
using UpdateTools;  // Contient une classe qui implémente IExtractor dans le contexte Update CRM
using GoogleTools;  // Contient une classe qui implémente IExtractor dans le contexte Google
using ZimbraTools;  // Contient une classe qui implémente IExtractor dans le contexte Zimbra
 
[...]
 
                // Choose the right external program
                IExtractor External;
                switch (Properties.Settings.Default.ExternalType)
                {
                    case "Google":
                        External = new GoogleExtractor();
                        break;
                    case "Zimbra":
                        External = new ZimbraExtractor();
                        break;
                    case "Update":
                        External = new UpdateExtractor();
                        break;
                    default:
                        External = null;
                        break;
                }
J'ai pas envie :
- de compiler le programme unitairement pour chaque programme externe
- de fournir l'ensemble des DLL au client
- d'avoir une liste de 20 kilomètres de références inutiles (seule une assembly sera utilisée en fonction du paramétrage)

Du coup, j'aimerais remplacer le code précédent par un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
// Project dependencies
using CommonTools; // Défini l'interface IExtractor
// Je ne référence plus rien d'autre
 
[...]
 
                // Choose the right external program
                IExtractor External new Assembly(Properties.Settings.Default.ExternalType);
Ça existe ? Quelle syntaxe ? Usine à gaz ?