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

Résolu
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 22 avril 2005 à 12:07
scoubidou944 Messages postés 714 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

6 réponses

scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
9 févr. 2006 à 14:41
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
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 avril 2005 à 12:30
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
0
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
22 avril 2005 à 12:44
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
0
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
22 avril 2005 à 13:19
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
0

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

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 avril 2005 à 13:43
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 avril 2005 à 13:47
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
0
Rejoignez-nous