Comment je peut mettre une classe dans un fichier et rendre ctte objet persista

Résolu
dalimrabet Messages postés 15 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 12 décembre 2010 - 18 nov. 2010 à 17:31
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 20 nov. 2010 à 23:22
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

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
20 nov. 2010 à 16: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!
3
captainFoyd Messages postés 11 Date d'inscription mardi 28 septembre 2010 Statut Membre Dernière intervention 30 avril 2012
18 nov. 2010 à 18:01
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".
0
dalimrabet Messages postés 15 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 12 décembre 2010
18 nov. 2010 à 20:39
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
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
18 nov. 2010 à 22:49
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dalimrabet Messages postés 15 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 12 décembre 2010
19 nov. 2010 à 16:59
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
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
20 nov. 2010 à 15:08
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!
0
dalimrabet Messages postés 15 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 12 décembre 2010
20 nov. 2010 à 15:21
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
0
dalimrabet Messages postés 15 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 12 décembre 2010
20 nov. 2010 à 23:12
salut Robert33
je te remercie infiniment pour les renseignements que vous m'avez données
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
20 nov. 2010 à 23:22
De rien

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

C# is amazing, enjoy it!
0
Rejoignez-nous