C# – Generisch serialisieren und deserialisieren

 Entwicklung  Kommentare deaktiviert für C# – Generisch serialisieren und deserialisieren
Nov 232009
 

Etwas, was ich in der Softwareentwicklung häufig brauche, ist das Serialisieren und Deserialisieren von Objekten.

Über dieses Thema habe ich im Jahre 2005 auch schon mal was geschrieben.

Objekt serialisieren und deserialisieren

Seit dieser Zeit hat sich aber einiges getan. .NET wurde um die Generics erweitert. Damit lassen sich ganz schöne Sachen machen.

Zum Beispiel, generisch serialisieren und deserialisieren

public static void Save<T>(T objectForSave, string fileName)
{
	using(FileStream fs = new FileStream(fileName, FileMode.Create))
	{
		XmlSerializer xml = new XmlSerializer(typeof(T));
		xml.Serialize(fs, objectForSave);

		fs.Flush();
	}
}

public static T Load<T>(string fileName)
{
	using(FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
	{
		XmlSerializer xml = new XmlSerializer(typeof(T));
		return (T)xml.Deserialize(fs);
	}
}

In diesem Beispiel wird der XmlSerializer verwendet. Allerdings kann man auch den BinaryFormatter für die Aufgabe her nehmen.

Der Einsatz der Methoden ist sehr einfach.

Foo foo = new Foo();
Save<Foo>(foo, "c:\foo.txt");
foo = Load<Foo>("c:\foo.txt");

kick it on dotnet-kicks.de