[C#] XML - Serialisation & reflexion (la j'en manque;p) [Résolu]

Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
- - Dernière réponse : scoubidou944
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
- 9 févr. 2006 à 14:41
Bon autant dire que j'en bave avec XML

L'init passe pas :

XmlTextWriter oWriter =
new XmlTextWriter (
@"d:\test2.xml",
null);


XmlSerializer oSerializer =
new XmlSerializer(
typeof(cLanguageList));

sur la 2ème ligne, il me donne une erreur de reflection.
voici les classes à sérialiser.
Et je parle meme pô des problème de serialisation avec les Hashtable.

[System.Xml.Serialization.XmlRoot(
"Element")]



public
class cLanguage
{
[XmlAttribute(
"Name")]
public
string m_szName;

public cLanguage ()
{
m_szName =
string.Empty;
}
}


[XmlRootAttribute("PurchaseOrder", Namespace"http://www.truc.com", IsNullable
false)]

public
class cLanguageList : CollectionBase
{

public cLanguageList ()
{}



public
int Add (cLanguage _oElementToAdd)
{

return
this.List.Add (_oElementToAdd);
}



public
virtual cLanguage
this [
int index ]
{

get
{

return ( ( cLanguage )(
base.List[ index ] ) );
}



set
{

base.List[ index ] =
value;
}
}
}

----------------------------
C++ forever
C# amateur
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
3
Merci
Vala finalement c'est réglé.
Voici une source que je viens de poser qui tente de rassembler un peu tout ce qu'on trouve sur le net et sur le forum pour sérialiser en XML meme les ArrayList ou HashTable

http://www.csharpfr.com/code.aspx?ID=35960

----------------------------
C++ forever
C# amateur

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 124 internautes nous ont dit merci ce mois-ci

Commenter la réponse de scoubidou944
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
59
0
Merci
Quelle est l'erreur? (Exception?)
Pourquoi tu passes null dans le constructeur du XmlTextWriter ?

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Commenter la réponse de cs_Bidou
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
0
Merci
le param null est pour le système d'encodage par défaut.



L'exception générée est :

{"Une erreur s'est produite lors de la réflexion du type 'QuickSampleConsole.cLanguageList'." }


lors de la construction de :

XmlSerializer oSerializer =
new XmlSerializer(
typeof(cLanguageList));



----------------------------
C++ forever
C# amateur
Commenter la réponse de scoubidou944
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
0
Merci
Il rest bien la solution de la sauver à la main avec un Count et chaque elements.

Mais la question suivante, lorsque l'on serialize un objet qui contient
la liste, comment lui dire d'utiliser notre fct perso de sauvegarde ?

----------------------------
C++ forever
C# amateur
Commenter la réponse de scoubidou944
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
59
0
Merci
Tu as pensé à marquer ta class comme Serializable?
Je ne vois pas l'attribut dans ton code ci-dessus !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Commenter la réponse de cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
59
0
Merci
Si tu veux sauver à la main, t'es obligé d'utiliser un XmlWriter...
Mais la Serialization, c'est très puissant, il est capable de sauver des classes complexes qui contiennent des structures complexes comme des hashtables.

Un problème que j'ai rencontré avec le Serializer, c'est lors de référence cyclique (genre la class A référencie un object B et la class B référencie un object A).


[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.