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 :

[KeyValuePair] surcharge de toString()


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 67
    Points
    67
    Par défaut [KeyValuePair] surcharge de toString()
    Bonjour,

    Par défaut, la fonction toString() de la structure KeyValuePair est formattée ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "["+key.toString()+","+value.toString()+"]"
    Cependant, je souhaite surcharger ce format de sortie.
    Je voudrai juste enlever les crochets et remplacer la ',' par '-'

    Une suggestion ?


    edit: pas capable d'écrire trois lignes sans faire des fautes d'orthographe

  2. #2
    Inscrit

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

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    KeyValuePair<TKey, TValue> étant un struct, ça me paraît compliqué...

    Si tu es en 3.5, une petites extension pourrait faire l'affaire...
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    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
     
    namespace Boulot
    {
        public static class Extensions
        {
            public static string toString(this KeyValuePair<string, string> kvp)
            {
                return kvp.Key + " - " + kvp.Value;
            }
        }
     
        public partial class MyForm: Form
        {
            public MyForm()
            {
                [...]
                // keyval = "[key,value]"
                string keyval = mykeyvalpair.toString();
            }    
     
        }
    }
    J'ai du oublié quelque chose ... mais quoi ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 67
    Points
    67
    Par défaut Up
    Je sais que c'est pas très réglo de upper sans ajouter d'info mais je bloque toujours la dessus et je n'arrive pas à trouver où ça cloque par rapport à la doc

    Toujours personne qui pourrait me débloquer ?

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    c'est pas comme ca une extension, il faut un attribut
    de plus une extension ne permet pas d'overrider

    donc il faut faire une autre fonction et l'appeler à la place d'appeler ToString
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    c'est pas comme ca une extension, il faut un attribut
    Pas besoin d'attribut.... Je pense que tu dois confondre...
    Citation Envoyé par sperot51 Voir le message
    de plus une extension ne permet pas d'overrider

    donc il faut faire une autre fonction et l'appeler à la place d'appeler ToString
    La fonction est toString ici, et C# est case-sensitive, donc c'est bien un autre nom de fonction.
    Le problème est qu'a priori, il faut que la méthode d'extension porte un nom différent des méthodes existantes sur l'objet (qui sont priorisées), de façon case-insensitive. Je ne sais pas vraiment pourquoi, et ma recherche rapide sur Google ne m'a pas donné de pointeurs sur le sujet.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    je pensais que vous parliez des méthodes d'extensions
    <System.Runtime.CompilerServices.Extension()>

    dans le code de TotorLeCastor, je ne vois pas comment mykeyvalpair.toString sait ou trouver la méthode sinon ...

    C# est case-sensitive
    argh, je déteste
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    je pensais que vous parliez des méthodes d'extensions
    <System.Runtime.CompilerServices.Extension()>

    dans le code de TotorLeCastor, je ne vois pas comment mykeyvalpair.toString sait ou trouver la méthode sinon ...
    Ben je t'invite à bosser C# 3.0 alors...
    Citation Envoyé par sperot51 Voir le message
    argh, je déteste
    Question de goût.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    ca doit etre juste une question de syntaxe alors, car nous en vb il est impossible de faire des classe static
    par contre l'attribut dont je parle sert à étendre une classe


    Question de goût.
    oui je sais bien

    mais vu qu'y en a qui viennent dire qu'ils aiment pas le vb sur notre forum, je fais pareil
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Surcharger la méthode ToString du type Boolean
    Par Kropernic dans le forum VB.NET
    Réponses: 13
    Dernier message: 10/04/2014, 16h29
  2. Comment surcharger ToString()
    Par PatricePatrice dans le forum C#
    Réponses: 2
    Dernier message: 15/09/2012, 23h53
  3. Réponses: 7
    Dernier message: 05/02/2010, 15h21
  4. Réponses: 5
    Dernier message: 24/04/2003, 12h47
  5. Réponses: 8
    Dernier message: 20/11/2002, 12h50

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