martedì 7 giugno 2011

Generic De/Serializer

Tempo fa ( ora non ricordo ne come ne quando ) avevo pubblicato un breve articolo su come
implementare la serializzazione / deserializzazione di un file XML o dataTable sfruttando al
meglio quanto già disponibile nella libreria di Ms.

System.xml.serialization ci offre l' XmlSerializer. Ho utilizzato questa libreria in un sacco di
progetti ma non ho mai avuto il tempo di perfezionare il codice come e quanto avrei voluto.

Oggi qualche minuto da dedicarci l'ho trovato e mi sono sbizzarito con Generic, per ottenere
un Serializzatore e un Deserializzatore completamente custom.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace Utils.XmlHelpers
{
public static class XmlDeSerializerTool
{

public static void Serialize<T>(string fileName, T elements)
{
TextWriter tw = new StreamWriter(fileName);
XmlSerializer xmls = new XmlSerializer(typeof(T));
xmls.Serialize(tw, elements);

tw.Close();
tw = null;
xmls = null;
}

public static T Deserialize<T>(string fileName)
{
Type e = typeof(T);

T elements = (T)Activator.CreateInstance(e);

TextReader tr = new StreamReader(fileName);
XmlSerializer xmls = new XmlSerializer(typeof(T));

elements = (T)xmls.Deserialize(tr);

tr.Close();
tr = null;
xmls = null;

return elements;
}
}
}

forse c'e' da limare qualcosa nelle Using.. ma direi che non è il caso di fare dei sofismi.. eh eh !

Qualcuno disse ... "il limite è la fantasia.. nel mio caso a volte è il tempo.


Nessun commento: