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 :

ToString() sur une propriétée


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 41
    Points : 55
    Points
    55
    Par défaut ToString() sur une propriétée
    Bonjour à tous,

    Est il possible de redéfinir la fonction ToString sur une propriétée d'une classe ?

    Exemple
    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 Mixeur
        {
            byte byPanoramique = 64;
            public byte Panoramique
            {
                get { return byPanoramique; }
                get 
                {
                    if (Panoramique == 0)
                        return "Left";
                    else if (Panoramique == 127)
                        return "Right";
                    else
                        return Panoramique.ToString();
                }
                set { byPanoramique = value; }
            }
        }
    Ce serait génial de pouvoir faire un oMixer.Panoramique.ToString();

    Est ce faisable ?

    Merci d'avance à vous !

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ce n'est pas une question de propriété
    toutes les classes en .net (et les structures aussi apparemment ^^) ont une méthode tostring
    par défaut ca retourne le nom de la classe, cette implémentation est overridable, donc beaucoup de classes retournent quelque chose de plus utile

    pour tout ce qui est byte, integer et autre ca permet de convertir en string, donc oui tu peux écrire .ToString
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Si tu veux que toute classe Mixeur definisse son ToString(), il te suffit d'ecrire un public override string ToString(){ // et la, tu mets ce que tu veux//}Si tu veux changer le ToString() d'un type de base, il faut une classe d'extension:
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        static class Extension
        {
            public static string ByteToString(this byte mybyte)
            {
                if (mybyte == 0)
                    return "Left";
                else if (mybyte == 127)
                    return "Right";
                else return mybyte.ToString();
            }
        }
    tu peux maintenant utiliser comme bon te semble: oMixer.Panoramique.ByteToString();Attention, cela sera valable pour tous les byte qui appelleront ByteToString()!
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 41
    Points : 55
    Points
    55
    Par défaut
    Merci à vous deux pour vos réponses.

    Je pense que je n'ai pas le choix, c'est soit je fait de Panoramique une classe pour pouvoir redéfinir ToString, soit je me fait à l'ancienne une fonction à coté de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public byte Panoramique { get; set; } = 0x40;
    string Panoramique_ToString()
    {
       if (Panoramique == 0)
           return "Left";
       else if (Panoramique == 127)
           return "Right";
       else return Panoramique.ToString();
    }
    Bon, du coup j'ai choisi la méthode à l'ancienne, tant pis, ce n'est pas le plus élégant mais bigrement efficace.

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 04/11/2007, 17h43
  2. Override fonction ToString d'une Propriété
    Par mobyspy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/05/2007, 16h34
  3. Réponses: 4
    Dernier message: 15/02/2007, 10h06
  4. Count sur une propriété d'un bean entité
    Par dmetzler dans le forum JSF
    Réponses: 11
    Dernier message: 14/02/2007, 21h35
  5. Réponses: 2
    Dernier message: 06/09/2006, 23h20

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