Feedback

C# - generische De-/ Serialisierung von Objekten in XML und Binär

Veröffentlicht von am 14.02.2008
(1 Bewertungen)
Mit dieser Klasse kann man Objekte Serialisieren und deserialisieren in XML oder in binär Dateien.
Die Klasse ist generisch.
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;

namespace Veasel.Serialisierung
{
	public enum SerialisierungTyp
	{
		Binary,
		XML
	}
	public class Serialisierung<T>
	{
		FileStream fs = null;

		#region öffentliche Methoden
		public void SaveToFile(T objectToSave, string FileName, SerialisierungTyp typ)
		{
			switch (typ)
			{
				case SerialisierungTyp.Binary: SaveBinary(objectToSave, FileName);
					break;
				case SerialisierungTyp.XML: SaveXML(objectToSave, FileName);
					break;
				default:
					break;
			}
		}

		public T LoadFromFile(string FileName, SerialisierungTyp typ)
		{
			T serializedObject = default(T);
			switch (typ)
			{
				case SerialisierungTyp.Binary: serializedObject = LoadBinary(FileName, serializedObject); 
					break;
				case SerialisierungTyp.XML: serializedObject = LoadXML(serializedObject, FileName);
					break;
				default:
					break;
			}
			return serializedObject;
		}
		#endregion

		#region private Methoden
		#region Binary
		private void SaveBinary(T obj, string filename)
		{
			try
			{
				fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
				BinaryFormatter bf = new BinaryFormatter();
				bf.Serialize(fs, obj);
			}
			finally
			{
				if (fs != null)
				{
					fs.Flush();
					fs.Close();
				}
			}
		}

		private T LoadBinary(string filename, T obj)
		{
			try
			{
				fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
				BinaryFormatter bf = new BinaryFormatter();
				obj = (T)bf.Deserialize(fs);
			}
			finally
			{
				fs.Flush();
				fs.Close();
			}
			return obj;
		}
		#endregion

		#region XML

		private void SaveXML(T obj, string filename)
		{
			try
			{
				fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
				XmlSerializer bf = new XmlSerializer(typeof(T));
				bf.Serialize(fs, obj);
			}
			finally
			{
				if (fs != null)
				{
					fs.Flush();
					fs.Close();
				}
			}
		}

		private T LoadXML(T obj, string filename)
		{
			try
			{
				fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
				XmlSerializer bf = new XmlSerializer(typeof(T));
				obj = (T)bf.Deserialize(fs);
			}
			finally
			{
				fs.Flush();
				fs.Close();
			}
			return obj;
		}
		#endregion
		#endregion
	}
}

Abgelegt unter Serialisierung, Serialization.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!