Below are the two methods for serialization and deserialization which take generic list as parameter.
private XDocument Serialize<T>(List<T> paramList)
{
var doc = new XDocument();
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(paramList.GetType());
System.Xml.XmlWriter writer = doc.CreateWriter();
serializer.Serialize(writer, paramList);
writer.Close();
return doc;
}
private List<T> Deserialize<T>(XDocument doc)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(List<T>));
System.Xml.XmlReader reader = doc.CreateReader();
List<T> result = (List<T>)serializer.Deserialize(reader);
reader.Close();
return result;
}
So now we can serialize whatever list we want. We don't need to specify the list type every time.
// For serialize
List<MyType> list = new List<MyType>();
list.Add(new MyType());
list.Add(new MyType() { Name = "Try", Value=123 });
var xml = Serialize(list);
xml.Save(filePath); // filePath is the location where xml is saved
// For deserialize
var document = new XDocument(XDocument.Load(filePath));
List<MyType> newList = Deserialize<MyType>(document );
c5779e03-1300-472e-85c6-d46fd24f7e5c|0|.0
Categories:
ASP.NET, C#, XML
10. July 2012
Tags: