begin process at 2010 02 10 02:29:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

serialisation et conservation de reference a une arraylist


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

serialisation et conservation de reference a une arraylist

lundi 23 mars 2009 à 11:18:14 | serialisation et conservation de reference a une arraylist

bobby3

Bonjour a tous
J'explique mon probleme
je gère des clients qui ont un certain nombre de specificité
j'ai une classe statique ou sont contenus une arraylist de client et une arraylist de specificité globale
dans client j'ai une arrylist de specificité qui lui sont propre
lorsque je crée un client je lui ajoute des specificité de cette manière
Code :
 
cli=new client()
cli.sesspecificité.add(classe statique.obtenirspecifité(numspecificité)
cli.sesspecificités.add......
 
tant que je suis dans l'application, les specificité contenus dans le client sont bien les memes que celles contenus dans la classe statiques, si je fais
Code :
cli.sesspecificités.remove(classestatique.obtenirspecifité(numspecificité)
//en considérant que la specificité est bien contenus dans le client
cela marche très bien
en revanche si je quitte mon application, je serialise ma liste de client et ma liste de specificité contenus dans la classe statique en SOAP
je relance mon application, je deserialise tout ca dans la classe statique, dans ma classe statique j'ai bien toutes mes données, dans mes clients j'ai bien toute mes specificités, mais lorsque je fait
Code :
cli.sesspecificités.remove(classestatique.obtenirspecifité(numspecificité)
//en considérant que la specificité est bien contenus dans le client
cela ne marche pas, comme si que la specificité a enlever était une nouvelle spécificité
Une seule explication a cela, je pense que lors de la sérialisation ou la serialisation, il me créé des spécificité dans la liste de specificité des clients plutot que de faire références aux spécificités contenus dans la classe statique
je ne sait absolument pas comment résoudre ce probleme, merci d'avance pour vos réponses
lundi 23 mars 2009 à 16:25:11 | Re : serialisation et conservation de reference a une arraylist

titeoe

bonjour,

quand tu sérialise ton objet client, as tu regardé si dans le Xml les spécificités sont bien indiquées ?

question, tu sérialises en SOAP, qu'entends tu par la ?
lundi 23 mars 2009 à 16:41:06 | Re : serialisation et conservation de reference a une arraylist

bobby3

oui dans le fichier client les spécificité sont bien indiqués, le probleme est lors de la deserialisation j'ai l'impression qu'au lien des remplir les liste de specificité d'un client a partir des specificité globales contenus dans la classe statique il me fait un new specificité()
dés lors lorsque je veux faire un remove des specificités d'un client a partir d'une specificité globale il me le trouve pas
sinon pour le SOAP il y a 3 types de serialisation: SOAP, xml et binaire, moi j'ai choisi la serialisation SOAP( qui serialise aussi en XML mais n'oblige pas à déclarer les champs en publics)
J'ai passé la journée dessus j'y comprend absolument rien
lundi 23 mars 2009 à 17:36:09 | Re : serialisation et conservation de reference a une arraylist

bobby3

un petit up car j'ai du nouveau
Il semblerait que lors de la serialisation ou de la deserialisation les références ne soit pas gardés
j'ai parcouru les fichiers xml de long en large et j'ai remarqué que les dépendances ne sont pas gardés lorsque je serialise
dans acteurs:

<acteur_x002B_ListSpe href="#ref-14"/>

je vais dans ref14

<a1:ArrayList id="ref-14" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Collections">
<_items href="#ref-19"/>
<_size>1</_size>
<_version>1</_version>
</a1:ArrayList>

je vais dans ref19

<SOAP-ENC:Array id="ref-19" SOAP-ENC:arrayType="xsd:anyType[4]">
<item href="#ref-20"/>*

je vais dans ref20

<a3:spécificité id="ref-20" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/GestaCom.classe/GestaCom%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<libelle id="ref-21">spe1</libelle>
</a3:spécificité>

et la j'apercoit une nouvelle specificité, alors que la reference devrait etre vers le fichier specificité
dans specificité
<a3:spécificité id="ref-3" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/GestaCom.classe/GestaCom%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<libelle id="ref-6">spe1</libelle>
</a3:spécificité>

pourtant dans le code tant que je ne quitte pas mes specificité sont bien issus de la collection de specificité contenus dans modele

Si certains ont des idées je suis preneur car je ne sait plus quoi faire
mardi 24 mars 2009 à 10:30:22 | Re : serialisation et conservation de reference a une arraylist

titeoe

hmmm

Je ne suis pas expert en soap mais je pense qu'il faut que tes propriétés soient bien présentes dans ton XML avant d'aller + loin.

As tu regardé la maniere dont les spécificités sont sérialisées ?
Autre chose , si vraiment tu galères un peu, tu peux écrire du code dans la méthode OnDeserialize qui te permettra d'initier tes spécificités après désérialisation.
mardi 24 mars 2009 à 10:40:46 | Re : serialisation et conservation de reference a une arraylist

bobby3

au  niveau du xml les données son bien présentes
le problème est que, pour simplifier, au lieu que dans le xml acteurs ils mettent "va me chercher la specificité dans la collection de specificité", il me créé une spécificité, comme je l'ai marqué au dessus
<a3:spécificité id="ref-20" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/GestaCom.classe/GestaCom%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<libelle id="ref-21">spe1</libelle>
</a3:spécificité>
après ca c'est peut être normal je ne sait pas je ne suis pas expert non plus en SOAP
je te monte aussi la anière dont je serialise deserialise peut-etre que ca pourrait t'aider
au lancement de l'appli
//on charge les données
            modele.ListSpe_set_get = modele.deserialiser(modele.ListSpe_set_get, "specificite");
            modele.ListProduit_set_get = modele.deserialiser(modele.ListProduit_set_get, "produit");
            modele.ListActeur1_set_get=modele.deserialiser(modele.ListActeur1_set_get, "acteur");
            modele.ModeDePasse_set_get = modele.deserialiser(modele.ModeDePasse_set_get, "MDP");
            modele.ListRaccourci_set_get = modele.deserialiser(modele.ListRaccourci_set_get, "raccourci");

a la fermeture de l'appli
modele.serialiser(modele.ListSpe_set_get, "specificite");
            modele.serialiser(modele.ListProduit_set_get, "produit");
            modele.serialiser(modele.ListActeur1_set_get,"acteur");
            modele.serialiser(modele.ModeDePasse_set_get, "MDP");
            modele.serialiser(modele.ListRaccourci_set_get, "raccourci");
            Application.Exit();

méthode dans la classe statique
        public static void serialiser(ArrayList col, string nom)//sauvegarde des données
        {
            string fichier = Application.StartupPath + "\\donnée\\" + nom;
            FileStream fs = null;
            try
            {
                fs = File.Open(fichier, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
                SoapFormatter bf = new SoapFormatter();
                {
                    bf.Serialize(fs, col);

                }
                fs.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("pbs sauvegarde donnée " + nom);
                }
        }

        public static ArrayList deserialiser(ArrayList col, string nom)
        {
            string fichier = Application.StartupPath + "\\donnée\\" + nom;
            FileStream fs = null;
            try
            {
                fs = File.Open(fichier, FileMode.Open, FileAccess.Read, FileShare.None);
                SoapFormatter bf = new SoapFormatter();
                col = ((System.Collections.ArrayList)bf.Deserialize(fs));
                fs.Close();
                return (col);

            }
            catch (Exception)
            {
                MessageBox.Show("problème lecture des données "+nom);
                try { fs.Close(); }
                catch { };//au cas ou sa ne se serait pas fermé
                return (new ArrayList());
            }
        }

voila dit moi ce que t'en pense, peut-etre faut'il serialiser les données "en même temps"
Sinon comme tu le voit pour la serialisation et le deserialisation c'est C# qui s'occupe de tout donc je ne peut pas trop intervenir ou modifier le processus

mardi 24 mars 2009 à 13:42:51 | Re : serialisation et conservation de reference a une arraylist

bobby3

Réponse acceptée !
bon bas je me suis résolu le problème tout seul


d'après moi le problème est que les spécificités d'un acteur ne pouvait pas référence à la liste de spécificité car cette liste n'était pas sérialisé dans le même fichier , je pense qu'il n'avait aucun moyen de dire que la référence provenait d'un autre fichier
pour remédier à cela au lieu de sérialiser chaque collection dans un fichier différent j'ai créé une collection contenant toutes les autres collection, et cette collection globale, de ce fait les spécificité d'un acteur pointait bien vers les spécificités globales contenus dans le même fichier (#réf)

Voila en ésperant que ce post aidera des personnes qui un jour se retrouveront avec le même problème que moi, c'est d'ailleurs étonnant que je n'ai rien trouvé à ce sujet sur internet


Cette discussion est classée dans : client, classe, statique, contenus, specificité


Répondre à ce message

Sujets en rapport avec ce message

.Net Remoting [ par CrazyCodeur ] Bonjour ! Je fais une petite appli win en c# utilisant le .NET Remoting et j'ai un petit soucis. Tout fonctionne correctemnt si j'appelle les méthodes classes imbriquées [ par mathmax ] Bonjour,Pouvez-vous m'aider sur ce problème de classes immbriquées :J'ai une classe 2 imbriquée dans une classe 1. Mes 2 classes ne sont pas statique. Accès au control d'un formulaire d'une class statique [ par ericmartinebalou ] Bonjour,J'ai programmé une méthode dans une classe statique qui effectue des opérations. J'aimerais depuis cette méthode atteindre un controle d'un fo Web Service Silverlight [ par bamb0u ] Bonjour,J'ai créer un webservice contenant une fonction qui va rechercher des informations dans une base de données. Ces informations sont ensuite sto [c#] référence d'un service web client à une classe proxy [ par Verrisan ] Bonjour tout le monde,J'ai généré avec l'utilitaire wsdl.exe de Visual Studio 2005 une classe proxy.cs à partir d'un fichier wsdl que l'on m'a fourni. Maitre/Détail collection binding [ par thorgal1612 ] Bonjour,J'essaye de faire une form qui permet de gérer des clients. Ce client possède des factures.J'ai un onglet qui contient tous les champs du clie streaming audio emission et reception [ par RV2931 ] Bonjour,J'amerais faire un programme client/serveur permettant d'envoyer les sons lu sur un pc client vers un autre pc serveur équipé d'un bon système Xml et ma librairie Excel [ par kooroza ] Bonjour,Je veux lire et modifier un fichier XML qui a à peu près la forme suivante.       A1    H Dérivation de classe abstraite [ par yoh_777 ] Je voudrais simplement dériver une classe abstraite ayant un constructeur comportant un paramètre.  Voici mon programme  <div style="border: 1pt d firebird [ par cudenetf ] bonjour je veu utiliser firebrid egalement a partir de visual studio 2005 g mis la version 2.0.1 de firebird , le ddexprovider (2.0.1) ( je sai pa a q


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales