Chargement dynamique d’un objet implémentant une interface
Revenons à une utilisation plus "saine" de la réflexion avec la réalisation du système de plug-ins de notre jeu. Cette partie de l’application va réaliser les actions suivantes : Plug-in
-
rechercher dans un répertoire donné des fichiers DLL,
-
filtrer parmi les fichiers DLL trouvés les assemblages .NET,
-
rechercher dans les assemblages trouvés les modules contenant des classes implémentant notre interface de jeu,
-
instancier ces classes,
-
exploiter les instances de ces classes.
Vous trouverez la solution Visual Studio se rapportant à cette section dans Chap12\PlugIn\PlugIn.sln.
1. Création d’une interface "plug-in"
La première étape de notre projet consiste à définir le ticket d’entrée de notre système de plug-ins, à savoir un contrat que tout module devra implémenter pour prétendre être appelé. Pour cela, on va créer un projet de type bibliothèque de classes contenant juste cette interface :
namespace ContratJeu;
public interface InterfaceJeu
{
// Titre du module de jeu
string Titre { get; }
// Question posée par le module de jeu
string Question { get; }
// Réponse du joueur
bool...