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 :

Utilisation de delegate à travers une interface


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut Utilisation de delegate à travers une interface
    Bonjour tout le monde,

    voilà mon problème j'ai une classe utilisant une fonction de type delegate, et je voudrais extraire l'interface de cette classe, mais lorsque je le fais la fonciton delegate n'est pas prise dans l'interface. De plus quand j'instancie un objet avec le type d'interface, je ne peux pas attribuer une fonction au delegate.

    Donc je voudrais savoir si c'est possible et si oui comment ?

    Exemple plus concret
    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
    24
     
    class MaClass : IMaClass
    {
        public delegate OhLeJoliDelegate();
        public OhLeJolieDelegate uneFonction;
     
    //PLUS D'AUTRE METHODE PUBLIC etc...
    }
     
    interface IMaClass
    {
    //METHOD A IMPLEMENTER
     
    //declaration du delegate
    }
     
    class AutreClass
    {
    unSimpleMethode
    {
        IMaClass maCLass = new MaClass();
        maClass.OhLeJoliDelegate += new OhLeJoliDelegate(uneFonctionDeMonAutreClass)
    }
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Moi je dirais, mais je dis peut-etre une betise aussi grosse que moi que ton delegate, si il n'est pas pris en compte dans l'extraction d'interface c'est peut-etre parce qu'il n'est pas typé ton deleegate ? non ?

    A priori, tu pourrais faire un truc comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    delegate void SampleDelegate(string message);
     
        interface INicolas
        {
            SampleDelegate myFunction
            {
                set;
            }
        }

    Non ?

    The Monz, Toulouse

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    mmm je te suis pas trop là, je devrais créer un setter de ma delegate dans la classe qui implemente l'interface? :s

    En fait j'ai trouvé une solution, j'ai fais un cast de mon objet type de mon interface en type de ma classe qui l'implémente... c'est pas très joli mais bon ca fonctionne.

    Mais je suis curieux de comprendre ce que toi tu me propose

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Beh, l'idée que je te proposais (c'est juste une idée) reside dans le fait que tu aurais pu faire une interface avec un delegate que l'utilisateur peut positionner...

    Tu vas me dire quel interet ?

    Un exemple simple.. imagine, tu definis une interface de bouton personnalisé et tu veux que l'utilisateur puisse fournire la méthode qui va par exemple décider si le bouton à le droit d'etre dans un état ou un autre.. en passant par le delegate et le set, tu t'autorises à permettre à une méthode exterieure de faire un certain nombre de choses sans passer par un mécanisme de methode ou d'event declenché....

    C'est une façon de declarer dans ton interface une méthode externe à la classe implémentant l'interface et faisant des traitements

    J'ai déja été confronté à un tel cas dans une librairie 3D (nova pour ne pas la citer) ou le delegate permettait de définir sa propre méthode de génération de nombres aléatoires , nombres exploités ensuite par le generateur de particule du dit moteur

    Est-ce plus clair ?

    The Monz, Toulouse

Discussions similaires

  1. utilisation de delegate sur une table
    Par antoine dpt dans le forum jQuery
    Réponses: 3
    Dernier message: 23/01/2012, 18h06
  2. utilisation des structures dans une interface
    Par ralf91 dans le forum C#
    Réponses: 5
    Dernier message: 22/01/2010, 16h55
  3. lire/encoder un badge à traver une interface en flex
    Par gouss dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 22/02/2009, 21h11
  4. Réponses: 1
    Dernier message: 19/02/2009, 12h40

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