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 :

[Reflection] DLL et utilisation de celle-ci


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Par défaut [Reflection] DLL et utilisation de celle-ci
    Re-bonjour à tous ...

    Je dois avouer que je sèche sur le mécanisme de "reflection" ... J'ai parcouru le tutorial traitant du sujet et je nage ...

    Bon, j'arrive grace à cela à charger ma DLL pas de soucis. Mais le soucis est que j'aimerais arriver à avoir un objet, qui me permette d'utiliser les fonctions que cette DLL contient.

    Bref, je charge la DLL comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim my_assembly As Assembly = Assembly.LoadFrom("test.dll")
    Maintenant, concrètement j'aimerais appeller la fonction "SubTime" (prenant en compte un "string" et en renvoyant un) de la classe "User" qui est contenue dans la DLL chargée.
    Et cela, j'ai eu beau chercher pendant 2 heures, je n'y arrive pas ... Cela est peut-être simple, mais je m'y perds.
    Tout ce que j'ai trouvé c'est parcourir la DLL pour voir ce qu'elle contient, mais ici je le sais ce qu'elle contient.

    Merci d'avance ... Et bonne année à vous tous ...

  2. #2
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Salut Sangdrax1604,

    La solution est:
    -->Copiez ton fichier.dll dans le Framework.net comme suit:
    -Panneau de Configuration->Outils d'administration->Microsoft .NET Framework (Version:1ou 2) Configuration.
    -cliquez sur Poste du travail->Cache d'assembly,click droite ajouter.

    Aprés au niveau de l'application, en haut de la page écrivez sous les bibliothéques standards du .net ,le nom de ton fichier dll.
    Exemple en C# : using System.web;
    ----
    using Package.nom de la classe;


    Si vous n'avez pas arriver a ajouter ton fichier.dll dans le Framework. voila le lien pour le faire:
    http://www.c-sharpcorner.com/UploadF...6-773e87ee80ad
    aprés que tu a crée le strong name pour ton .dll, tu l'ajoutes dans le .net Framework et tu fais comme ci-dessus.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    (pas compris la réponse proposée)


    sinon, la reflection, pour utiliser quelque chose de concret il faut partir de quelque chose de concret, en l'occurrence une instance d'objet

    ton objet assembly permet de créer une instance via createinstance ou un truc dans le genre

    ensuite tu fais un monObjet.gettype.getmehod("nom_de_la_sub").invoke en gros


    enfin ceci est valable dans le cas d'une classe, pour un module (type vb6) tu peux appeler sans instance je pense
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Expert confirmé
    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
    Par défaut
    Heureusement qu'il a parlé de reflection ... enfin bref

    Tu peut procéder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Assembly asm = Assembly.LoadFile(file_name);
                            Type typeDeLobjetQueTuVeux = asm.GetType("Nom complet de la classe avec le Namespace devant", true);
                            MethodInfo méthodeQueTuVeux = typeDeLobjetQueTuVeux .GetMethod("TaMéthode", new Type[] { typeof(Version) <-- arguments qu'attend la fonction });
     
                            méthodeQueTuVeux .Invoke(null, new object[] { arguments });

Discussions similaires

  1. [dll] libérer une dll apres utilisation
    Par polo54 dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 11/07/2009, 22h48
  2. TForm dans une DLL avec utilisation d'Interface
    Par guedelmalin dans le forum Langage
    Réponses: 13
    Dernier message: 17/06/2005, 11h58
  3. Réponses: 7
    Dernier message: 13/01/2005, 10h30
  4. Chargement d'une DLL et utilisation du multithread
    Par Maitre Kanter dans le forum Langage
    Réponses: 6
    Dernier message: 07/09/2004, 23h18
  5. [DLL] Utilisation d'une DLL pour utiliser serveur Firebird
    Par sekiryou dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/08/2004, 14h20

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