Deserialisieren von XML zur Liste der Objekte
Ich habe eine Liste, die ich füllen Sie die mit ToDo-Objekte und speichern Sie in XML. Das klappt perfekt. Ich habe Probleme mit Deserialisieren von XML-zurück zu der Liste der ToDo-Objekte. Ich weiß, dass es schon einige ähnliche Fragen, aber keiner von Ihnen hat mir geholfen, deshalb Schreibe ich.
ToDo Objekt Klasse:
public class ToDo
{
public string ToDoString;
public DateTime Date;
}
Main-program-Klasse und Methoden zum serialisieren und Deserialisieren:
static class Program
{
static List<ToDo> ToDoList = new List<ToDo>();
public static void Serialize(string toDoString)
{
//Create and Initialise the object
ToDo newToDo = new ToDo();
newToDo.ToDoString = toDoString;
newToDo.Date = DateTime.Now;
//Add the object to the List
ToDoList.Add(newToDo);
//Serialize List and save to XML
XmlSerializer mySerializer = new XmlSerializer(ToDoList.GetType());
//To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter("myXML.xml");
mySerializer.Serialize(myWriter, ToDoList);
myWriter.Close();
}
public static void Deserialize()
{
//This code was originally wrote to deserialize single object. Now I need to deserialize List of objects and this code doesn't work.
XmlSerializer myDeserializer = new XmlSerializer(ToDoList.GetType());
FileStream myFileStream = new FileStream("myXML.xml", FileMode.Open);
deserializeToDo = (ToDo) //Problems start here
myDeserializer.Deserialize(myFileStream);
myFileStream.Close();
}
}
So, wie ich Deserialisieren von XML zur Liste der ToDo-Objekte?
Vielen Dank für die Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende Werke für mich
Ich habe gerade diese eine Zeile in
Deserialize
Einen Tipp für Sie
using
- block in der Nähe einen stream für Sie.Deserialize(myFileStream)
gibt Daten eingegebenobject
. Und da Sie wissen, dass es sein sollte eine Liste vonToDo
Sie cast es. Es ist nur ein Weg, wie man die gleichen Daten. Compiler denkt, dass es ist Objekt und Sie wissen, dass es in Ihrer Liste, sodass du ihm sagen, abou t es. Ich hoffe, es macht Sinn ein kleines bisschen 🙂Sollten Sie Deserialisieren es mit der folgenden Anweisung:
Sollte die Arbeit zu tun.
var deserializedToDoList = (List)myDeserializer.Deserialize(myFileStream);
Sie einen generischen parameter den Typ desList
. In diesem FallToDo
.Entfernen Sie die Zeile im code mit dem Kommentar //Das problem beginnt hier.
Erfassen der Ausgabe von myDeserializer.Deserialisieren(myFileStream) wie folgt: