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 :

Serialiser un enum


Sujet :

Dotnet

  1. #1
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut Serialiser un enum
    Bonjour à tous,

    J'ai un type enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public enum FareType:int
        {
            Published = 0,
            Negotiated = 1 ,
            Unifare = 2, 
            LowestOfPublishedAndNegotiated = 3, 
            LowestOfPublishedAndUnifare = 4
        }
    Ce type enum est une des propriétés d'une class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class toto
    {
           public FareType TYPE_OF_FARE
            {
                get
                {
                    return this.tYPE_OF_FAREField;
                }
                set
                {
                    this.tYPE_OF_FAREField = value;
                }
            }
    }
    Quand je sérialise cette class j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    <TYPE_OF_FARE>Published</TYPE_OF_FARE>
    ...
    Et je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    <TYPE_OF_FARE>0</TYPE_OF_FARE>
    ...
    Pour résumer, dans le xml je veux la valeur du enum (0,1,2,...) et pas le nom.
    Comment faire ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Points : 144
    Points
    144
    Par défaut
    Essaye en declarant ton enum de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [FlagsAttribute] 
    public enum FareType:int
        {
            Published = 0,
            Negotiated = 1 ,
            Unifare = 2, 
            LowestOfPublishedAndNegotiated = 3, 
            LowestOfPublishedAndUnifare = 4
        }

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    cela dit, si tu passes par le XmlSerializer, il te fait automatiquement cela
    sans avoir à ajouter quoi que ce soit

    The Monz, TOulouse

  4. #4
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    Merci mais ca ne marche pas.

  5. #5
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    Citation Envoyé par theMonz31
    cela dit, si tu passes par le XmlSerializer, il te fait automatiquement cela
    sans avoir à ajouter quoi que ce soit

    The Monz, TOulouse
    Je passe par XmlSerializer et il ne met pas la valeur mais le nom (comme je l'explique dans mon premier post).

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    oups pardon....

    Alors, tu peux toujours faire un doublon..

    A savoir, un champ Enum qui te sert dans ton application
    mais que tu marques à NonSerializable et un chant int qui correspond
    à la valeur de ton enum mais en Int

    je sais, c pas forcement la solution la plus "élégante", mais elle aura au moins
    le mérite de fonctionner...

    Ou alors, il faut peut-etre faire une surcharge du ToString()

    The Monz, Toulouse

  7. #7
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    Merci pour les propositions.
    J'ai déjà utilisé la technique du double champ mais je voulais une solution plus élégante.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 68
    Points : 80
    Points
    80
    Par défaut
    Essai d'écrire ton Enumération 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
     
    public enum FareType:int
        {
            [System.Xml.Serialization.XmlEnumAttribute("0")] 
            Published = 0,
            [System.Xml.Serialization.XmlEnumAttribute("1")] 
            Negotiated = 1 ,
            [System.Xml.Serialization.XmlEnumAttribute("2")] 
            Unifare = 2, 
            [System.Xml.Serialization.XmlEnumAttribute("3")] 
            LowestOfPublishedAndNegotiated = 3, 
            [System.Xml.Serialization.XmlEnumAttribute("4")] 
            LowestOfPublishedAndUnifare = 4
        }

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2009, 15h54
  2. est il possible de serialiser un composant visuel ?
    Par uliss dans le forum C++Builder
    Réponses: 12
    Dernier message: 15/04/2004, 10h22
  3. [TABLE][ENUM] u champs à choix multiple ?
    Par narmataru dans le forum SQL
    Réponses: 2
    Dernier message: 04/11/2003, 10h25
  4. [VB6]Sérialiser un objet
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 11/10/2003, 10h05
  5. Serialiser de gros documents XML
    Par philemon_siclone dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 17/09/2003, 15h26

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