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 :

modification d'une classe et désérialisation


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut modification d'une classe et désérialisation
    bonjour

    j'ai une classe que j'ai sérialisé en base, j'ai rajouté une propriété sur cette classe as uneenum et cette enum ne contient pas la valeur 0
    à la désérialisation ca passe, mais ca laisse 0 sur la propriété ajoutée
    et impossible de resérialiser ensuite car 0 ne fait pas partie de l'enum

    (l'enum fait partie du framework et je ne peux donc pas la modifier)

    donc comment faire pour s'en sortir ?

    merci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,




    Peut-être comme ceci :
    • Encapsuler l'enum dans une classe X,
    • ajouter une instance x (sérializable) de X dans la classe à sérializer.
    Je suppose qu'en désérialisant x, x sera égal à null.
    Donc , à priori, pas de problème à la sérialization.




    Ensuite, on peut toujours créer une propriété qui fait :
    • get de l'enum contenu dans x en donnant une valeur par défaut si x est null,
    • set de l'enum qui alloue x si x est null.
    Sinon, on peut éventuellement voir du coté des call_back de (dé)serialization (OnDeserializingAttribute, OnSerializedAttribute, OnSerializingAttribute), mais je ne maîtrise pas.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    ca ne m'arrange pas trop tout ca, je fais du code générique, je recherche les classes à sérialiser via un attribut maison
    donc je ne peux pas modifier les classes qui utilisent cette enum
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je ne suis pas sur d'avoir bien compris ton problème.

    Ta propriété est en lecture-écriture ?

    Est ce une sérialisation binaire ou xml ?

    Pourquoi ne gére tu pas une valeur par défaut ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    ma propriété est une propriété as contentalignment
    il y a une variable privée qui vaut middlecenter
    j'ai fait un genre de designer simplifié, et donc créé un attribut qui se met au dessus des propriétés à sérialiser (en xml)

    j'ai hérité de cette classe avec return mybase.propriété et ai mis l'attribut sur cette propriété (j'epsère que ce n'est pas ca qui fait que la valeur de la variable privée n'est pas prise en compte ...)

    cette classe a déjà été sérialisé, donc sans cette valeur de propriété
    et à la désérialisation il met 0 dans la valeur de la propriété
    alors que 0 ne fait pas partie de l'enum

    comme le but c'est que les développeurs ai juste à placer des attributs, je ne peux modifier que mon code


    d'ailleurs question subsidiaire, si je retire une propriété à sérialiser, lors de la désérialisation d'un code xml ayant une valeur pour cette propriété ca fait quoi ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ma propriété est une propriété as contentalignment
    il y a une variable privée qui vaut middlecenter
    j'ai fait un genre de designer simplifié, et donc créé un attribut qui se met au dessus des propriétés à sérialiser (en xml)

    j'ai hérité de cette classe avec return mybase.propriété et ai mis l'attribut sur cette propriété (j'epsère que ce n'est pas ca qui fait que la valeur de la variable privée n'est pas prise en compte ...)
    Ok. Met un attribut sur la variable membre elle-même pour forcer sa sérialisation et met l'attribut XmlIgnore sur la propriété elle même.

    d'ailleurs question subsidiaire, si je retire une propriété à sérialiser, lors de la désérialisation d'un code xml ayant une valeur pour cette propriété ca fait quoi ?
    Bonne question; je n'en sais rien; je pense qu'avec le serialiseur standard ça pête.

    Si tu veux gérer ce genre de truc, fais un sérialiseur spécifique.

Discussions similaires

  1. modification d'une classe
    Par BradPitt dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/04/2009, 09h48
  2. [Langage] Modification d'une classe dans un vector
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2008, 03h44
  3. [MySQL] Modification d'une classe requêtant pour MySQL
    Par gimpycpu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/03/2008, 00h16
  4. Réponses: 1
    Dernier message: 17/04/2007, 16h51

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