C# Ne peut sérialiser classe avec une Liste<CustomObject> propriété
Hi
Je suis en train de sérialiser
FileStream fileStream = new FileStream("batches.xml", FileMode.Open);
XmlSerializer serializer = new XmlSerializer(typeof(List<Batche>));
List<Batche> listOfBatches = new List<Batche>();
[Serializable]
[XmlRoot("Batch")]
public class Batche
{
[XmlElement("Title")]
public string Title
{
get;set;
}
[XmlArray("ListOfLinks"),XmlArrayItem("Link",Type = typeof(Link))]
public List<Link> Links
{
get;set;
}
}
[Serializable]
[XmlRoot("Link")]
public class Link
{
[XmlElement("Uri")]
public Uri Uri
{
get;
set;
}
[XmlElement("Status")]
public string Status
{
get;
set;
}
}
L'obtention d'erreur suivant :
Il y a une erreur reflétant le type de Système.Les Collections.Génériques.Liste`1[DownloadTRON.Les entités.Batche]'.
essayé ce depuis les 4 dernières heures,
tout organisme peut point ce que je fais de Mal !
Ce qui concerne
Pravin
Cela peut vous aider stackoverflow.com/questions/1212742/...
OriginalL'auteur Pravin | 2011-01-22
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de problème avec votre code ou la sérialisation des génériques. Uri n'a pas de constructeur par défaut et ne peut pas être sérialisé. Envisager de changer de chaîne et tout fonctionne. Si vous prévoyez d'utiliser le XmlSerializer vous pouvez supprimer l'attribut Serializable car il n'est pas utilisé.
Quand j'ai couru votre code avec le débogueur et vu l'exception, il y avait un intérieur d'exception avec un intérieur d'exception avec un intérieur d'exception et ainsi de suite. Toujours une bonne idée de suivre ce lapin dans le trou quand vous le pouvez.
OriginalL'auteur Ryan Pedersen
Vous devez passer plus de types qui sont en xml,à XmlSerializer, dans votre cas, le type de Lien.
Utilisez cette
Oui hein, j'étais sur le point d'ajouter que moi-même. Il devrait remplacer Uri avec une Chaîne. Et aussi spécifier toutes les supplémentaire types de désérialisé en dehors de l'Lots (dans le XmlSerializer ctor).
OriginalL'auteur Vijay Sirigiri
Vos propres classes doivent implémenter un constructeur public sans paramètres, par exemple pour la classe Lien
vous devez mettre en œuvre un supplément de constructeur
Lien public() {}
OriginalL'auteur Ahmad Mushtaq