Generic functions to Load and Save saturated objects of any type with XML serialization.
using System;
using System.IO;
using System.Xml.Serialization;
namespace rootsilver.serialization{
public class Test{
public static void Main(){
Test test = new Test();
Settings settings = new Settings(){ name="test.setting"};
string filePath = test.Save(settings);
settings = test.Load<Settings>(filePath);
Console.WriteLine(settings.name);
Person person = new Person(){ name="Jeff", age = 34};
filePath = test.Save(person);
person = test.Load<Person>(filePath);
Console.WriteLine(person.age + " " + person.name);
}
public T Load<T>(string filePath) {
T t = default (T);
using (Stream stream = File.Open(filePath, FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
t = (T)serializer.Deserialize(stream);
}
return t;
}
public string Save<T>(T t) {
string filePath = typeof(T).ToString() + ".xml";
using (Stream stream = File.Open(filePath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(stream, t);
}
return filePath;
}
}
//Some classes to test serialization
public class Settings{
public string name{get;set;}
}
public class Person{
public int age{get;set;}
public string name{get;set;}
}
}
output: