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 :

Comment rendre tout générique


Sujet :

C#

  1. #1
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut Comment rendre tout générique
    J'aimerai déporter la fonction Hastable Add(Hastable) dans l'interface principal, mais j'obtiens une ambiguïté.

    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
        public interface IBrClientActions<T> where T : class
        {
            T Add(T element);
            void Update(T element);
        }
     
        public interface IBrClientAdresseClientActions : IBrClientActions<AdresseClient>
        {
             Hashtable Add(Hashtable h);
        }
        public interface IBrClientRoleClientActions : IBrClientActions<Role>
        {
             Hashtable Add(Hashtable h);
        }
     
        public class AdresseClient
        {
     
        }
        public class Role
        {
     
        }
    Une idée ?
    Microsoft Certified Professional Developer SharePoint 2010

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Je suis pas certain de ce que tu demande mais ce que tu écrit n'est pas bon

    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
    25
    26
     
    public interface IBrClientActions<T> where T : class
        {
            T Add(T element);
            void Update(T element);
        }
     
        public interface IBrClientAdresseClientActions : IBrClientActions<AdresseClient>
        {
          AdresseClient Add(AdresseClient h);
          void Update(AdresseClient element);
        }
        public interface IBrClientRoleClientActions : IBrClientActions<Role>
        {
            Role Add(Role h);
            void Update(Role element);
        }
     
        public class AdresseClient
        {
     
        }
        public class Role
        {
     
        }
    serait plus juste car tu remplace T par le type de classe entre les chevrons <>
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Pas sûr non plus de ce que tu veux (C'est venredi, je suis fatigué ) mais si c'est le fait d'avoir les 2 Add dans les classes qui implémentent ton interface, voila une façon de procéder:

    Code C# : 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
    25
    26
    27
     
      public interface IBrClientActions<T,U> where T : class where U : class 
        {
            T Add(T element);
            void Update(U element);
        }
     
     
     
     
        public interface IBrClientAdresseClientActions : IBrClientActions<Hashtable,AdresseClient>
        {
     
        }
        public interface IBrClientRoleClientActions : IBrClientActions<Hashtable, Role>
        {
     
        }
     
        public class AdresseClient
        {
     
        }
        public class Role
        {
     
        }
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  4. #4
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut
    Je cherche plutôt a faire compile un truc du genre :

    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
    25
    26
    27
    28
        public interface IBrClientActions<T>
        where T : class
        {
            T Add(T element);
            Hashtable Add(Hashtable hashtable);
            void Update(T element);
            void Update(Hashtable hashtable);
        }
     
        public interface IBrClientActions : IBrClientActions<AdresseClient>,
                                        IBrClientActions<Role>,
                                        IBrClientActions<LienClient>
        {
     
        }
     
        public class AdresseClient
        {
     
        }
        public class Role
        {
     
        }
        public class LienClient
        {
     
        }
    Microsoft Certified Professional Developer SharePoint 2010

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fredo02 Voir le message
    Je cherche plutôt a faire compile un truc du genre [...]
    Donc apparememnt ça ne compile pas
    Peux-tu nous dire quel est le message d'erreur affiché dans la fenêtre de sortie ?


    @GuruuMeditation
    On est vendredi

  6. #6
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut
    Ambiguité sur la methode HashTable Add(Hastable hashtable) et sur Update(Hastable hashtable) !!!
    Microsoft Certified Professional Developer SharePoint 2010

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fredo02 Voir le message
    Ambiguité sur la methode HashTable Add(Hastable hashtable) et sur Update(Hastable hashtable) !!!
    C'est normal Parce que le jour où T sera de type HashTable alors là on aura deux méthodes identiques pour Add(HashTable hashTable) et aussi Update(HashTable hashtable)La solution pour toi c'est de créer une classe BusinessObject qui sera héritée par tes classes métiers AdresseClient et Role. Ensuite tu modifies la règle au lieu de where T : class tu mets where T : BusinessObject.

  8. #8
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    normal que tu es cette erreur, regarde mon code je te l'ai corrige pour que ca compile.
    Je crois que tu as un défaut de design et que tu n'as pas pris la bonne direction.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

Discussions similaires

  1. Comment rendre toutes les cellules d'un jtable éditables?
    Par doudou7777 dans le forum Composants
    Réponses: 2
    Dernier message: 11/04/2014, 21h28
  2. Comment rendre générique la structure de données d'un ListView ?
    Par altropus dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 12/12/2009, 10h14
  3. Executable comment rendre tout dynamique
    Par Elise49 dans le forum Exécution et industrialisation
    Réponses: 3
    Dernier message: 27/04/2009, 16h59
  4. Réponses: 25
    Dernier message: 17/11/2008, 09h11
  5. [JTable] Comment rendre seulement toute une
    Par danje dans le forum Composants
    Réponses: 3
    Dernier message: 13/12/2004, 18h18

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