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 :

Interface ISerializable et cycles redondants


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut Interface ISerializable et cycles redondants
    Bonjour à tous,

    Malgré moultes recherches sur le net, je n'arrive pas à trouver quelque chose de vraiment concret concernant l'interface ISerializable.
    J'aimerai pouvoir maitriser la serialisation de mes objets sans pour autant avoir à réécrire toute une classe me permettant de gérer les fichiers XML (lecture/ecriture). Pour cela, j'ai bien essayé la serialisation de base XML avec le XMLFormatter mais il y a un hic quand j'ai une relation cyclique entre mes objets. Par exemple, si j'ai un objet pere avec une liste d'enfants et que chacun a un lien vers le parent, le serializeur n'apprecie pas vraiment.
    Concernant l'interface ISerializable, j'ai mis en place la méthode GetObjectData mais je ne passe jamais dedans lorsque je serialise.

    Auriez vous un bon lien vers de la doc concernant cette interface ? J'ai bien vu l'exemple microsoft mais ils ont sorti le bazooka pour pas grand chose (cas d'un singleton...) et je n'y comprend pas grand chose...

    Merci d'avance

  2. #2
    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
    Bonjour

    Citation Envoyé par zax-tfh Voir le message
    Par exemple, si j'ai un objet pere avec une liste d'enfants et que chacun a un lien vers le parent, le serializeur n'apprecie pas vraiment.
    Pour ce cas, il suffit de dire au serializer XML d'ignorer l'attribut/la propriété en question avec XmlIgnore. Mais ceci dit, en bonne logique une telle propriété devrait être en lecture seulement et donc ne poser aucun problème au moment de la sérialisation. Le serializer XML standard ne prend en effet en compte que les membres et propriétés publiques accessibles en lecture-écriture (contrairement au serializer binaire).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Merci pour ta réponse, j'y ai déjà pensé mais comment gère tu ensuite la relation du parent ? Car si tu ignores l'attribut, lors de la déserialisation, il ne refera pas la relation Pere de l'objet Enfant.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    L'interface ISerializable (tout comme l'attribut Serializable) n'ont rien à voir avec la sérialisation XML, ils servent pour la sérialisation binaire ou SOAP.

    Si tu veux personnaliser la sérialisation XML, tu peux implémenter IXmlSerializable, mais c'est un peu galère...

    Sinon, pour ton problème spécifique, j'avais écrit un billet à ce sujet il y a quelque temps, regarde si ça peut t'aider

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Salut Tomlev,

    Merci pour les liens, et apparement, la premiere solution, bien qu'un peu verbeuse, me parait la plus judicieuse dans mon cas
    Nickel chrome ! merci beaucoup

    @+

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Par contre, petite question :
    Avec l'interface IXmlSerializable, j'ai implémenté tout ce qu'il fallait pour que la serialisation/deserialisation se passe nickel avec des objets pere/fils pour que les relations cycliques soient correctement gérées.
    Mais j'ai pu remarquer que le writer, par défaut utilise le nom de la classe pour créer l'élément XML. Sais tu s'il est possible de changer de nom pour en mettre un à notre sauce ? j'ai tenté de voir dans les dataannotations <XML... mais à priori elles ne s'appliquent pas à la déclaration de la classe.
    Aurais tu une idée sur le sujet ?
    Merci

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

Discussions similaires

  1. [VB.NET] Interface ISerializable
    Par c4rr3r4 dans le forum VB.NET
    Réponses: 0
    Dernier message: 07/02/2011, 17h06
  2. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  3. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  4. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  5. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50

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