Сериализация с DataContractSerializer
public static class Serializer
{
public static string Serialize(object obj, Type type)
{
DataContractSerializer serializer = new DataContractSerializer(type);
string result = string.Empty;
using (MemoryStream stream = new MemoryStream())
{
serializer.WriteObject(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
result = Encoding.Default.GetString(buffer);
}
return result;
}
public static object Deserialize(string xml, Type type)
{
DataContractSerializer serializer = new DataContractSerializer(type);
object result = new object();
using (MemoryStream stream = new MemoryStream())
{
byte[] buffer = Encoding.Default.GetBytes(xml);
stream.Write(buffer, 0, buffer.Length);
stream.Seek(0, SeekOrigin.Begin);
result = serializer.ReadObject(stream);
}
return result;
}
public static string GetType(string xml)
{
try
{
string name = System.Xml.Linq.XDocument.Parse(xml).Root.Name.ToString();
return name.Substring(name.IndexOf("}") + 1, name.Length - name.IndexOf("}") - 1);
}
catch { return string.Empty; }
}
}
Add comment октября 2, 2009