using System.Collections.Generic;
using System.Xml.Serialization;
public class ProjectHistoryModel
public int JobNumber { get; set; }
public int DesignKey { get; set; }
public string ProjectName { get; set; }
public static class ExtensionMethods
public static string SerializeObject<T>(this T source)
var xmlserializer = new XmlSerializer(typeof(T));
var stringWriter = new StringWriter();
using (var writer = XmlWriter.Create(stringWriter))
xmlserializer.Serialize(writer, source);
return stringWriter.ToString();
throw new Exception("An error occurred", ex);
public static T DeserializeObject<T>(this string source)
if (string.IsNullOrEmpty(source))
var xmlserializer = new XmlSerializer(typeof(T));
var stringReader = new StringReader(source);
using (var reader = XmlReader.Create(stringReader))
var result = xmlserializer.Deserialize(reader);
throw new Exception("An error occurred", ex);
public static void Main()
var input = new List<ProjectHistoryModel>
var serialized = input.SerializeObject();
Console.WriteLine(serialized);
var output = serialized.DeserializeObject<List<ProjectHistoryModel>>();
foreach (var item in output)
Console.WriteLine("JobNumber: {0} DesignKey: {1} ProjectName: {2}", item.JobNumber, item.DesignKey, item.ProjectName);