序列化使用extension methods.
namespace TestConsole
{
public static class ObjectHelper
{
public static string MySerialize(this object obj)
{
XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
xmlSerializer.Serialize(stream, obj);
byte[] buf = stream.ToArray();
string xml = Encoding.ASCII.GetString(buf);
stream.Close();
return xml;
}
public static T MyDeserialize<T>(this string s)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
byte[] buf = Encoding.ASCII.GetBytes(s);
MemoryStream stream = new MemoryStream(buf);
T o = (T)xmlSerializer.Deserialize(stream);
return o;
}
}
[Serializable]
public class MyClass
{
public string Name { get; set; }
public int age { get; set; }
public MyClass()
{
Name = "guest";
age = 12;
}
}
class Test
{
public static void Main(string[] args)
{
MyClass mc = new MyClass();
string xml = mc.MySerialize();
Console.WriteLine("xml is " + xml);
MyClass obj = xml.MyDeserialize<MyClass>();
Console.WriteLine("deserializ is " + obj.age + " " + obj.Name);
Console.ReadLine();
}
}
}