Comment je peut mettre une classe dans un fichier et rendre ctte objet persista [Résolu]

Signaler
Messages postés
15
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
slt tout le monde
j'ai commencé mon code en programmant avec le c# , j'ai crée une classe personne avec les attributs qui sont l'age et le nom .
Svp comment je peux mettre cette classe dans un fichier et rendre cette objet persistant , j'ai besoin d'aide .
Merci beaucoup d'avance .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace personne_sit0
{
public class Person
{
ushort m_age;
string m_name;

public void saisir()
{
Console.WriteLine("saisir le nom");
m_name = Console.ReadLine();
Console.WriteLine("saisir l'age");
m_age = (ushort.Parse(Console.ReadLine()));
}

public Person()
{
Console.WriteLine("Nouvelle personne créée.");
}

public Person(string name, ushort age)
{
this.m_age = age;
this.m_name = name;
Console.WriteLine("Nouvelle personne créée. Cette personne s'appelle " + name + " et a " + age + " ans.");
}
public void affichage()
{
Console.WriteLine(" Je m'appelle " + this.m_name + " et j'ai " + this.m_age + " ans.");
}
}

class Programper_sit0
{
static void Main(string[] args)
{

Person p = new Person();
p.saisir();
p.affichage();
Console.ReadLine();
}
}
}

9 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
OK, mais reprenons du début
1- on crée une class sérialisable

    [Serializable]
    public class Person 
    {
        public string Name { get;  set; }
        public int Age { get;  set; }
        public Person(string nom, int age)
        {
            Name = nom;
            Age = age;
        }
        private Person() { }//Constructeur pour la sérialization
    }
2- on crée une class programme qui contient la liste,les methodes pour la saisie, la sérialisation et la déserialisation

    public class Program
    {
        List Personnes = new List();
        public void saisir()
        {
            while (true)
            {
                Console.WriteLine("saisir le nom");
                string name = Console.ReadLine();
                if (name == "")
                    break;
                Console.WriteLine("saisir l'age");
                int age = (ushort.Parse(Console.ReadLine()));

                Personnes.Add(new Person(name, age));
            }
        }
        // Serialisation dans un fichier "Personne.xml"
        public void Serialize()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List));
            Stream writer = new FileStream("Personne.xml", FileMode.Create);
            serializer.Serialize(writer, Personnes);
            writer.Close();

        }
        //Déserialisation d'un fichier "Personne.xml"
        public void Deserialize()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List));
            FileStream fs = new FileStream("Personne.xml", FileMode.Open);
            Personnes = (List)serializer.Deserialize(fs);
            fs.Close();
        }
    }

3- Il ne reste qu'à faire le programme principal qui utilisera la class Program
    class MainProgramm
    {
        static void Main(string[] args)
        {
            Program test1 = new Program();
            test1.saisir();
            test1.Serialize();

            // on test la désérialisation dans un autre objet.
            Program test2 = new Program();
            test2.Deserialize(); // La liste de l'objet test1 à été rechargée dans ce nouvel objet test2 ;-)
        }
    }
4- enfin il faut ajouter les clauses Using
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.IO;


Voila de quoi démarrer.
Bon code

Bob.
C# is amazing, enjoy it!
Messages postés
11
Date d'inscription
mardi 28 septembre 2010
Statut
Membre
Dernière intervention
30 avril 2012

Tu peux le sérialiser en xml avec les outils de sérialisation xml du c#.

            
XmlSerializer xmlSerializer = new XmlSerializer(objectToSerialize.GetType());
xmlSerializer.Serialize(xmlWriter, objectToSerialize);


Il y a des exemples en cherchant "La sérialisation XML avec .NET".
Messages postés
15
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

salut tout le monde
merci captainFoyd ,mais quand je met ce code la dans le main (la fonction principale) le programme ne connait pas " XmlSerializer " comment on peut l'initialiser ?
merci beaucoup
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
5
Salut.

Assure toi d'avoir fait appel au namespace System.Xml.Serialization, par l'instruction

using System.Xml.Serialization

dans l'en tête de ton code.

Only the strong survive !
Messages postés
15
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

salut tout le monde
merci pour tout les gens qui m'avais donné quelques idées , concernant le code j'ai fait l'appel du using System.Xml.Serialization comme il ma indiqué imothepe_33 que je le remercie beaucoup , encore il y a un problème dans "xmlSerializer.Serialize(xmlWriter, objectToSerialize);" .
si quelqu'un a une autre idée concernant la sérialisation des objets ou une solution pour cette idée qu'il m'aide .
merci beaucoup
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonjour

Que veux-tu dire par
encore il y a un problème dans "xmlSerializer.Serialize(xmlWriter, objectToSerialize);"

donne un plus plus de détail, stp.

Que veux-tu faire de cet objet persistant par la suite ? le recharger, mais comment ?
par exemple si tu as un liste de "Personne", alors il vaux mieux sérialiser la liste.

Bob.

C# is amazing, enjoy it!
Messages postés
15
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

SALUT tout le monde
concernant votre question Robert33 , oui je veux faire la sérialisation du la liste des personnes qui existe . il y a quelqu'un qui ma donner l'idée de mettre la classe dans un fichier , est ce que tu as une idée sur la sérialisation ?
svp si tu as une idée que tu m'aide car je suis un peur bouleversé et merci beaucoup d'avance
Messages postés
15
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

salut Robert33
je te remercie infiniment pour les renseignements que vous m'avez données
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
De rien

Pense à cocher "Réponse accepter" pour fermer ce post
Bob.

C# is amazing, enjoy it!