IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Chargement de DLLs depuis un fichier


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut [C#] Chargement de DLLs depuis un fichier
    Bonjour à tous,

    Je cherche importer dynamiquement des DLLs contenues dans un dossier (ceci implique qu'on ne connait pas à l'avance le nom des fichiers) en .net 3.5! j'ai tenté l'approche suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void MaFonction()
            {
                string LibFileFath = "/DLL";
     
                foreach (string l_file in Directory.GetFiles(LibFileFath) )
                {
                    FileInfo l_fileInfo = new FileInfo(l_file);
                    if(l_fileInfo.Extension.ToLower().Equals(".dll") && l_fileInfo.Name.StartsWith("Debut_"))
                    {
                        Assembly.LoadFrom(LibFileFath + "/" + l_fileInfo.Name);
                    }
                }  
            }
    mais ça ne marche pas. Quelqu'un aurait-il une autre solution à proposer?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par BillyKane59 Voir le message
    mais ça ne marche pas
    Mais encore ? Tu obtiens une erreur ? Si oui, quelle erreur ?

    De toutes façons, en l'état ce code ne sert à rien : tu charges un assembly mais tu ne fais rien avec...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    effectivement ça ne peut marcher; j'aimerais importer ladite dll et pouvoir invoquer toutes les fonctions qui la composent, du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private static CMere m_res;
    m_res = new CEnfant_2();
     
     public static void Fonction1(int var)
            {
     
                    m_res.Fonction1(var);
     
            }
    chaque dll a une classe CEnfant_x héritant de la classe mère CMere, et les intitulés des fonctions sont identiques. J'aimerais éviter de faire à chaque fois un DllImport. Est-ce possible? Si oui comment dois-je procéder?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    La classe Fonction1 est définie dans la classe de base ?

    Dans ce cas il suffit de faire quelque chose comme ça (pour chaque assembly) :

    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
    // Charger l'assembly
    Assembly asm = Assembly.LoadFrom(...);
     
    // Trouver les types qui héritent de CMere
    Type[] types = asm.GetTypes().Where(t => typeof(CMere).IsAssignableFrom(t)).ToArray();
     
    foreach(Type t in types)
    {
        // Créer une instance du type et l'affecter à une variable CMere:
     
        CMere x = (CMere)Activator.CreateInstance(t);
     
        // Appeler la méthode Fonction1
        x.Fonction1(42);
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par tomlev Voir le message
    La classe Fonction1 est définie dans la classe de base ?
    Oui Fonction1 est déclarée en tant que méthode abstraite dans la classe mère et définie dans toutes les classes enfant.


    Citation Envoyé par tomlev Voir le message
    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
    // Charger l'assembly
    Assembly asm = Assembly.LoadFrom(...);
     
    // Trouver les types qui héritent de CMere
    Type[] types = asm.GetTypes().Where(t => typeof(CMere).IsAssignableFrom(t)).ToArray();
     
    foreach(Type t in types)
    {
        // Créer une instance du type et l'affecter à une variable CMere:
     
        CMere x = (CMere)Activator.CreateInstance(t);
     
        // Appeler la méthode Fonction1
        x.Fonction1(42);
    }
    Merci beaucoup, cette méthode a l'air de fonctionner

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2012, 14h11
  2. Réponses: 1
    Dernier message: 10/07/2012, 16h31
  3. Chargement d'une BDD depuis un fichier excel
    Par pev15 dans le forum Modélisation
    Réponses: 5
    Dernier message: 24/06/2008, 11h24
  4. Réponses: 3
    Dernier message: 08/02/2008, 16h47
  5. chargement de données depuis un fichier texte
    Par mohamida dans le forum Administration
    Réponses: 1
    Dernier message: 07/01/2007, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo