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 :

[Debutant] Type et type, la difference


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Par défaut [Debutant] Type et type, la difference
    Bonjour a tous j'essaye d'utiliser le fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static Delegate GetDelegateForFunctionPointer (
        IntPtr ptr,
        Type t
    )
    J'ai un delegate defini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public delegate void MeasureTCMM18DoneHandler(MeasureDoneArgs e);
    et quand je veux faire une fonction pour combiner le tout comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void AssignGetDelegate(IntPtr prt)
            {
                Type t = GetType(mTCMM18MeasureDoneHandler);
                MeasureTCMM18DoneHandler lmeas = Marshal.GetDelegateForFunctionPointer(prt,t);//MeasureTCMM18DoneHandler);
                mTCMM18MeasureDoneHandler += lmeas;
            }
    il me dit "Error 1 No overload for method 'GetType' takes '1' arguments"
    "Error 2 Cannot implicitly convert type 'System.Delegate' to 'TCMM18Library.MeasureTCMM18DoneHandler'. An explicit conversion exists (are you missing a cast?)"


    Si j'utilise typeof au lieu de GetType ca me dit :
    "Error 1 Cannot implicitly convert type 'System.Delegate' to 'TCMM18Library.MeasureTCMM18DoneHandler'. An explicit conversion exists (are you missing a cast?)"


    Bref j'ai essaye deux-trois autres facons sauf la bonne,

    Vous auriez des pistes pour avancer svp ?

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Essaye avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void AssignGetDelegate(IntPtr prt)
    {
        Type t = mTCMM18MeasureDoneHandler.GetType();
        MeasureTCMM18DoneHandler lmeas = (MeasureTCMM18DoneHandler)Marshal.GetDelegateForFunctionPointer(prt,t);
        mTCMM18MeasureDoneHandler += lmeas;
    }

  3. #3
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Oui parce que GetDelegateForFunctionPointer retourne un Delegate, alors il faut faire un cast de la valeur de retour.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Par défaut
    Merci ton code compile ! Apres fonctionellement je peux pas tester

    En faisant des essais de mon cote j'ai trouve aussi que ca marchait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Type t =  typeof (MeasureTCMM18DoneHandler);
                MeasureTCMM18DoneHandler lmeas = (MeasureTCMM18DoneHandler)Marshal.GetDelegateForFunctionPointer(prt,t);//MeasureTCMM18DoneHandler);
                mTCMM18MeasureDoneHandler += lmeas;
    Bref Il fallait vraiment faire un CAST,

    Merci encore

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

Discussions similaires

  1. reinterpret_cast<type>, static_cast<type> ou (type)?
    Par méphistopheles dans le forum Débuter
    Réponses: 6
    Dernier message: 24/03/2009, 11h12
  2. [DEBUTANT] Utiliser le type Map
    Par Battosaiii dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 05/10/2006, 17h09
  3. [debutant] variable de type Range et Integer
    Par in dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 05/07/2006, 09h47
  4. [Debutant] test de type
    Par muquet dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2006, 11h44
  5. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08

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