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

C# Discussion :

Charger dll dynamiquement


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut Charger dll dynamiquement
    Bonsoir,
    J'ai un petit souci lors de l'invocation de méthode au sein de DLL.
    Voici mon 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
     
    public object LoadDllMethod(string Methode, object[] Parameters)
            {
                for (int i = 0; i < this._assemblyName.Length; i++)
                {
                    if (this._assemblyName[i] != null)
                    {
                        foreach (Type type in this._assemblyName[i].GetTypes())
                        {
                            foreach (MethodInfo member in type.GetMethods())
                            {
                                if (member.Name == Methode)
                                {
                                    object ClassObj = Activator.CreateInstance(type);
                                    object Result = type.InvokeMember(member.Name, BindingFlags.Default | BindingFlags.Public | BindingFlags.InvokeMethod, null, ClassObj, Parameters);
                                    return (Result);
                                }
                            }
                        }
                    }
                }
                return (null);
            }
    Je passe bien dans le "if (member.Name == Methode)" met apres j'ai une exception "Methode Introuvable" a cette ligne : object Result = type.InvokeMember(member.Name, BindingFlags.Default | BindingFlags.Public | BindingFlags.InvokeMethod, null, ClassObj, Parameters);... Je ne comprend pas pourquoi.
    Si quelqu'un pouvait m'aider.

    Merci d'avance
    Cordialement

    NeoKript

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Déjà il nous faudrait le prototype de la méthode que tu souhaites invoquer, avec ça on pourra avoir une vague idée
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    salut et merci pour ta reponse,
    toutes les Methode sont de la forme :

    public string methode(string[]);

    voila merci

  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
    Pourquoi utiliser type.InvokeMember ? tu peux faire le Invoke directement sur la méthode, puisqu'elle est déjà résolue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        object Result = member.Invoke(ClassObj, Parameters);
    D'autre part, c'est pas très optimisé de créer une instance juste pour pouvoir appeler une méthode... il vaudrait sans doute mieux déclarer la méthode en static, non ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Merci pour ta reponse,
    ce coup ci, j'ai une autre exception : Additional information: Nombre de paramètres incorrects.

    Alors que les paramètres sont bien bon... Je ne comprend pas ...

    NeoKript

  6. #6
    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
    fais voir comment tu appelles LoadDllMethod

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string[] result = tab[i].Split(new string[] { " " }, StringSplitOptions.None);
    this.send((string)this._loadDll.LoadDllMethod(result[0], result));
    Merci

  8. #8
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Essaye ça :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string[] result = tab[i].Split(new string[] { " " }, StringSplitOptions.None);
    this.send((string)this._loadDll.LoadDllMethod(result[0], new object[]{result}));

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Merci, ca passe, fallait le savoir qu'il fallait creer un nouveau objet !

    Encore merci a tous.

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

Discussions similaires

  1. Je voudrais charger des DLL dynamiquement.
    Par Invité dans le forum VB.NET
    Réponses: 10
    Dernier message: 13/03/2015, 12h18
  2. Charger dll dynamique pour utilisation de ses classes
    Par Tehko dans le forum Visual C++
    Réponses: 4
    Dernier message: 14/03/2013, 12h13
  3. Charger Dll sur un serveur distant
    Par lolo_ici_et_la dans le forum Windows
    Réponses: 6
    Dernier message: 29/03/2006, 13h12
  4. cree un dll dynamique
    Par totorien dans le forum MFC
    Réponses: 1
    Dernier message: 15/06/2005, 14h09
  5. Réponses: 8
    Dernier message: 22/12/2004, 22h57

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