public void PerformDataContractSerialization() { //Die Klasse "ContractedClass" ist eine selbsterstellte Klasse die verschiedene Datentypen besitzt um später die deserialisierungsfunktion zu prüfen. ContractedClass contractedClass = new ContractedClass(66, "XML-Serialisiertes Objekt", true); //Ein Contractor wie den DataContractSerializer ist ähnlich wie der BinaryFormatter nur dass der DataContractSerializer im XML format die Objekte schreibt. //Ein Contractor schließt eine vereinbarung zwischen Applikation und Datei. Der Contractor nimmt nur Datentypen an die er vorher über die Parameter kennengelernt hat. Sonst droht eine SerializationException. DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(object), new List <Type>(4) { typeof(string), typeof(ContractedClass), typeof(int), typeof(bool), typeof(object[]) }); FileStream fileStream = new FileStream(@"C:\Users\DCelik\Desktop\GeometricObjectSolution\GeometricObjectSolution\SerializedXMLData.dat", FileMode.Append, FileAccess.Write, FileShare.Read); //Wegen der Hirarchischen Struktur von XML Dateien kann nur ein Stammobjekt übergegeben werden. Mehrere Stammobjekte führt bei der Deserialisierung immer zu einer Exception. //Glücklicherweise können wir Arrays und andere Collections problemlos Serialisieren. Somit kann man über ein workaround mehrere Objekte im XML format serialisieren und deserialisieren. //Bei Contractor heißt die Serialisierungsfunktion ".WriteObject()" und die Deserialisierungsfunktion ".ReadObject()". dataContractSerializer.WriteObject(fileStream, new object[4] { contractedClass, 9999, "Ist erfolgreich auf XML-Format serialisiert", true }); fileStream.Dispose(); //In der unteren Methode wird die selbe Datei wieder Deserialisiert PerformDataContractDeserialization(); }
public void PerformDataContractJsonSerialization() { //Ähnlich wie beim gewöhnlichen DataContractSerializer ist der DataContractJsonSerializer ein Contractor der aber auf ein JSon Format die Objekte schreibt. //Ein wichtiger unterschied ist das JSon keine Metadaten schreibt sondern nur öffentliche Member dazuzählt während das XML-Format fast alle Daten eines Objekts miteinbezieht. DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(object), new List <Type>(5) { typeof(int), typeof(object[]), typeof(bool), typeof(string), typeof(ContractedClass) }); ContractedClass contractedClass = new ContractedClass(99, "JSon serialisiertes Objekt", true); FileStream fileStream = new FileStream(@"C:\Users\DCelik\Desktop\GeometricObjectSolution\GeometricObjectSolution\SerializedJSONData.dat", FileMode.Append, FileAccess.Write, FileShare.Read); jsonSerializer.WriteObject(fileStream, new object[4] { contractedClass, 6666, "Ist erfolgreich auf JSon-Format serialisiert", true }); fileStream.Dispose(); PerformDataContractJsonDeserializer(); }