[DataContract()]
public class TestClass
{
[DataMember()]
public int testInt = 5;
[DataMember()]
public string testString = "Test";
}
Man muss also vor die Klasse
[DataContract()]
schreiben und dann vor jedes Objekt, welches abgespeichert werden soll [DataMember()]
. Ich musste bei mir in den Verweisen von Visual Studio noch System.Runtime.Serialization hinzufügen.Um nun z.B. die Klasse
testClass
welche vom Typ TestClass
ist abzuspeichern, benötigt man 5 Zeilen Code. Das sieht dann so aus:var writer = new FileStream("outputFileName.xml", FileMode.Create);
Type type = testClass.GetType();
DataContractSerializer serializer = new DataContractSerializer(type);
serializer.WriteObject(writer, testClass);
writer.Close();
Die produzierte Datei sieht dann folgendermaßen aus:
<?xml version="1.0"?>
<TestClass xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SerializeTest">
<test1>5</test1>
<test2>Test</test2>
</TestClass>
Man kann also sofort auf einen Blick sehen, welchen Wert welches Objekt hat, was beim Serialisieren in eine Datei im binary-Format nicht möglich ist.
Um nun die Datei wieder einzulesen geht man folgendermaßen vor:
var reader = new FileStream("outputFileName
.xml", FileMode.Open);
Type type = testClass.GetType();
DataContractSerializer deSerializer = new DataContractSerializer(type);
testClass = (TestClass)deSerializer.ReadObject(reader);
reader.Close();
Keine Kommentare:
Kommentar veröffentlichen