Lier/Appeler une assembly à la volée ?
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:
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:
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 ?