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 :

probleme d'event avec heritage


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut probleme d'event avec heritage
    Tout d'abord, bonne année à tous !

    Je me retrouve face à un probleme que je n'avais pas prévu...

    J'ai une classe de base avec des events statics.

    Visiblement, il n'est pas possible dans une classe fille de déclencher ces events; c'est comme si on etait dans une classe totalement exterieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Class Papa
    {
       public static event EventHandler Started
    }
     
    Class Fils : Papa
    {
    Public void Raise()
    {
       if(Started!= null)
           Started(null,EventArgs.Empty); //=> le Compilateur refuse :(
    }
    }
    Ca m'embete beaucoup car:
    1) le soft est deja en prod
    2) aujourd'hui je dois créer une classe Fille avec les memes events, demain ca sera la classe Cousin, PtitFils, etc...

    Auriez vous des suggestions pour contourner ce probleme, tout en garantissant que les autres dev n'oublieront pas d'implementer ces events dans les futures classes enfant à venir?

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    Implémente une méthode "protected" dans la classe "Papa" qui lance l'événement.


    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
    Class Papa
    {
       public static event EventHandler Started
     
         protected void Raise()
         {
            if(Started!= null)
              Started(null,EventArgs.Empty); 
     
         }
    }
     
    Class Fils : Papa
    {
        Public void Raise()
        {
            base.Raise();
         }
    }

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    D'accord mais alors plutôt comme ça :
    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
    Class Papa
    {
       public static event EventHandler Started
     
         protected virtual void Raise()
         {
            if(Started!= null)
              Started(null,EventArgs.Empty); 
     
         }
    }
     
    Class Fils : Papa
    {
        Protected override void Raise()
        {
            base.Raise();
            //ici le code propre à Fils...
         }
    }
    yes bacelar !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 184
    Points : 12 327
    Points
    12 327
    Par défaut
    Manquerait pas un petit "virtual" dans la classe Papa ?

Discussions similaires

  1. probleme avec heritage
    Par padawan78 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/03/2008, 21h03
  2. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  3. [Kylix] Probleme de séparateur avec Kylix2 ?
    Par jeanphy dans le forum EDI
    Réponses: 4
    Dernier message: 10/02/2003, 16h41
  4. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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