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();
        }