Sommaire

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 Chap11\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  
        ...