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

Dotnet Discussion :

[Conception] Simuler un héritage multiple


Sujet :

Dotnet

  1. #21
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Est-ce que tu peux détailler un peu plus ce que tu veux ?
    yes je peux.

    On va mettre ça dans le context réel : J'ai créé un projet qui fourni des controles WPF permettant de valider les contrôles enfant : WPFErrorProviders

    Dans ce projet je crée donc des contrôles héritant des contrôles container "usuels" : Grid, StackPanel, etc, etc, etc.

    A partir de cet héritage je veux rajouter des fonctionnalités aux controles. Particulièrement je veux ajouter des AttachedDependencyProperty. Ces propriétés sont simulés dans le moteur WPF par des fonctions statiques (ce qui s'explique très bien mais c'est pas le sujet). Or toute les fonctions que veux ajouter à ces contrôles sont les mêmes pour tout les contrôles.

    En fait je suis coincé par la combinaison de deux facteurs : C'est statique et ça doit absolument être porté par le contrôles qui hérite des contrôles "standard"

    En espérant avoir été plus clair

  2. #22
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par dev01 Voir le message
    En espérant avoir été plus clair
    Oui c'est plus clair.

    Je ne me suis jamais intéressé à WPF, donc navré si je sors une bêtise : est-ce que les méthodes d'extensions ne résoudraient pas ton problème ?

  3. #23
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Oui c'est plus clair.

    Je ne me suis jamais intéressé à WPF, donc navré si je sors une bêtise : est-ce que les méthodes d'extensions ne résoudraient pas ton problème ?
    Et non les méthodes d'extension ne sont ni porté par le type, ni statique :-(

  4. #24
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par dev01 Voir le message
    Et non les méthodes d'extension ne sont ni porté par le type, ni statique :-(
    Ben si, elles sont statiques justement (ou alors on se comprend mal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static class Extensions
    {
      public static void TaMethode(this TonControlBase control) {}
    }

  5. #25
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Ben si, elles sont statiques justement (ou alors on se comprend mal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static class Extensions
    {
      public static void TaMethode(this TonControlBase control) {}
    }
    ouais mais TonControlBase c'est quel type ? si on veux que la méthode d'extension fonctionne il faut que ça soit un des types dérivés (exemple GridErrorProvider ) ...

  6. #26
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par dev01 Voir le message
    ouais mais TonControlBase c'est quel type ?
    Le type de base commun de tes contrôles ça n'irait pas ?

    P.S :

    Ou alors un mix :

    • Définition d'une Interface que tu fais implémenter par tes contrôles
    • Extension sur le type de l'interface

  7. #27
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Ma solution ne te plaît pas?
    Pourtant j'ai l'impression que c'est une des seules possibilités.

  8. #28
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Par défaut
    A premiere vue la solution proposee par Keihilin me parait la plus simple et judicieuse a mettre en place. Apres tout les extensions methods sont basees sur le dp decorator, sont statiques et tu peux les utiliser dans les interfaces. Et effectivement en utilisant le type de base de tes controls tu devrais arriver a tes fins. As tu essaye cette solution?

  9. #29
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Apparement nos réponses le passionnent...

  10. #30
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Le truc c'est que si il crée une classe enfant héritant de la classe étendue, est-ce qu'il est en mesure de redéfinir cette méthode d'extension?

  11. #31
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Apparement nos réponses le passionnent...
    Apparement j'ai pas le temps de me pencher la dessus. Vos réponses sont très intéressantes mais j'ai pas le temps de les tester. Il vrai que j'aurait pu poster un petit message pour dire "ok merci, j'ai pas le temps de les tester je vous tiens au courant"

  12. #32
    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 : 44
    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
    Par défaut
    Cet article pourrait t'intéresser
    http://www.codeproject.com/KB/architecture/smip.aspx

  13. #33
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Bonjour à tous.

    Tout d'abord je souhaite remercier toutes les personnes qui ont pris du temps pour réfléchir aux problèmes soulevés ici. Je tiens également à m'excuser pour le peu de temps que j'ai pu accorder à cette discussion et pour ne pas avoir donnée de nouvelles pendant tout ce temps.

    Ce problème est aujourd'hui réglé (ça c'est la bonne nouvelle ). Mais il n'est pas réglé de manières "satisfaisante" à mon sens (encore trop de code dupliqué à mon gout).

    Voici la méthode employé pour résoudre cette affaire :
    Le principal problème vient du fait que les DependencyProperty et leurs amis doivent être statiques. Ceci empêche toute factorisation du code dans le sens ou une interface ne permet pas d'avoir de membre statique et surtout mes classes héritent déjà d'une autre classe. La solution adopté est toute simple (tellement qu'il m'a falu 2 mois pour y penser ) : Je passe effectivement par une interface qui est implémenté dans chacun des contrôles.L'astuce réside dans le fait que l'interface contient la définition de méthode "proxi" pour les membres statique de la classe qui l'implémente. Ainsi les deux critères de réussite sont réunis : Les classes dérivés des controles ont les membres statique et le code est factorisé car l'interface défini les méthodes nécessaires.

    (en relisant je suis pas sur d'être très clair )
    Si vous avez des questions ou si vous souhaitez des précisions, n'hésitez pas

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2014, 23h39
  2. Quels motifs de conception en remplacement de l'héritage multiple ?
    Par Neuromancien2 dans le forum Débats sur le développement - Le Best Of
    Réponses: 26
    Dernier message: 16/06/2011, 01h50
  3. [PHP 5.2] Héritage multiple obligatoire ou mauvaise conception ?
    Par sinasquax dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2010, 02h31
  4. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03
  5. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55

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