Serialization d'une classe

Signaler
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
1
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
9 mai 2012
-
Bonjour


Je voudrais comprendre la methode la plus simple pour sauver le contenu d'une classe dans un fichier afin de la recuperer ensuite


Bien sur en bon véréran du C, je pourrais ecrire cela "a la main" mais je pense quand meme que .NET offre des methodes plus intégrée


J'ai donc essayé le code ci-dessous
Mais qui me donne une erreur
J'ai ensuite compris que je devais mettre la methode GetObjectData dans ma classe


Mais je commence a me demander si je ne fais pas fausse route
Si quelqu'un sait comment faire simplement et peut me guider, je serais le plus heureux de ce jour !


Merci


  [Serializable()]
  public class ImportDef : ISerializable     // définition du template d'import
  {
    public string Country { get; set; } // country from import
    public UInt32 LayerID { get; set; }  // layer Id from import
    public string LayerName { get; set; } // layer name from import
    public int isValid { get; set; }       // set to 1 if definition is valid
    public bool useValue { get; set; }     // false if value is not used (meta group Only)
    public int ColCode { get; set; }       // indice colonne code
    public int ColValue { get; set; }      // indice colonne valeur
    public int ColGroup { get; set; }      // Optionnel indice colonne Groupe
    public bool optCount { get; set; }     // true if value is count of lines
    public bool optNoDup { get; set; }     // Avoid Duplicate
    public bool optGenVal { get; set; }    // Automaticaly Generate Values from Input Key
    public int HeaderRow { get; set; }     // indice row header (NoHeader = -1)
    public int FirstDataRow { get; set; }  // indice first data row (default = -1)
    public string Separators {get;set;}    // Separateurs
    public string FileName { get; set; }   // full file name
  };



Error 1 'Ogb.Import.ImportDef' does not implement interface member 'System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)' D:\projets\MapScope.v2\Mapscope\Import\import.cs

4 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
58
Salut,
Bah ça dépend ce que tu veux faire? Ca dépend le format que tu souhaites?
Pour un fichier XML, XmlSerializer devrait suffir non?

http://www.csharpfr.com/codes/PERSONNALISER-SERIALIZATION-XML-AVEC-ATTRIBUTS_41632.aspx

<hr />
-Blog-
-Site Perso-
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

J'utilise pour ma par une classe :

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

namespace TonNameSpace
{
    public class GenericXmlSerializer
    {
        public static void Serialize(object obj, string Path)
        {
            XmlSerializer oXmlSerializer = new XmlSerializer(obj.GetType());
            StreamWriter oStreamWriter = new StreamWriter(Path);
            oXmlSerializer.Serialize(oStreamWriter, obj);
            oStreamWriter.Close();
        }

        public static object Deserialize(string Path, Type t)
        {
            XmlSerializer oXmlSerializer = new XmlSerializer(t);
            StreamReader oStreamReader = new System.IO.StreamReader(Path);
            object obj = oXmlSerializer.Deserialize(oStreamReader);
            oStreamReader.Close();
            return obj;
        } 
    }
}


Ensuite te reste plus qu'à mettre les lignes qui suivent où tu en a besoin:

Sérialisation :
GenericXmlSerializer.Serialize(TonObjet, TonChemin);

Désérialisation :
TonObjet = (LeTypeDeTonObjet)GenericXmlSerializer.Deserialize(TonChemin, TonObjet.GetType());

tu cast se que tu récupère de ta désérialisation selon le type de ton objet que tu insert dans une variable objet.
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Bonjour

Merci a tous, je pesais etre obligé de deriver l'interface ISerializer sur ma classe mais je comprends que ce n'est pas nécessaire
Messages postés
1
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
9 mai 2012

Bonjour à tous.Je suis actuellement sur un projet de développement d'un générateur d'application.Je voudrais avoir une démarche de conception solide me permettant la réutilisabilité et la maintenance de celle-ci. Merci de bien vouloir m'aider. si possible avoir des informations sur l'utilisation des DLL dans un projet comme le mien.