CSharp · Console
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
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)
{
if (source == null)
{
return string.Empty;
}
try
{
var xmlserializer = new XmlSerializer(typeof(T));
var stringWriter = new StringWriter();
using (var writer = XmlWriter.Create(stringWriter))
{
xmlserializer.Serialize(writer, source);
return stringWriter.ToString();
}
}
catch (Exception ex)
{
throw new Exception("An error occurred", ex);
}
}
public static T DeserializeObject<T>(this string source)
{
if (string.IsNullOrEmpty(source))
{
return default(T);
}
try
{
var xmlserializer = new XmlSerializer(typeof(T));
var stringReader = new StringReader(source);
using (var reader = XmlReader.Create(stringReader))
{
var result = xmlserializer.Deserialize(reader);
return (T)result;
}
}
catch (Exception ex)
{
throw new Exception("An error occurred", ex);
}
}
}
public class Program
{
public static void Main()
{
var input = new List<ProjectHistoryModel>
{
new ProjectHistoryModel
{
JobNumber = 1,
DesignKey = 2,
ProjectName = "Three"
},
new ProjectHistoryModel
{
JobNumber = 4,
DesignKey = 5,
ProjectName = "Six"
},
new ProjectHistoryModel
{
JobNumber = 7,
DesignKey = 8,
ProjectName = "Nine"
}
};
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);
}
}
}