/// <summary>
/// Serialize object to xml string
/// </summary>
/// <typeparam name="T">T type</typeparam>
/// <param name="value">object value</param>
/// <returns>xml string</returns>
public static string XMLSerialize<T>(T value)
{
string serializeXml = string.Empty;
if (value != null)
{
XmlSerializer xmlserializer = new XmlSerializer(typeof(T));
StringWriter stringWriter = new StringWriter();
using (XmlWriter writer = XmlWriter.Create(stringWriter))
{
xmlserializer.Serialize(writer, value);
serializeXml = stringWriter.ToString();
}
}
return serializeXml;
}
/// <summary>
/// Serialize object to xml string
/// </summary>
/// <typeparam name="T">T type</typeparam>
/// <param name="value">object value</param>
/// <returns>xml string</returns>
public static T XMLDeserialize<T>(string serializeXml)
{
if (!string.IsNullOrEmpty(serializeXml))
{
XmlSerializer xmlserializer = new XmlSerializer(typeof(T));
StringReader stringReader = new StringReader(serializeXml);
using (XmlReader reader = XmlReader.Create(stringReader))
{
return (T)xmlserializer.Deserialize(reader);
}
}
else
{
return default(T);
}
}
/// <summary>
/// Binary serialzie object
/// </summary>
/// <typeparam name="T">Type T</typeparam>
/// <param name="obj">object</param>
/// <returns>string</returns>
public static byte[] BinarySerialize<T>(T obj)
{
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, obj);
var bytes = memoryStream.ToArray();
memoryStream.Close();
memoryStream.Dispose();
return bytes;
}
/// <summary>
/// Binary deserialzie object
/// </summary>
/// <typeparam name="T">Type T</typeparam>
/// <param name="data">data</param>
/// <returns>string</returns>
public static T BinaryDeserialize<T>(byte[] data)
{
T returnValue = default(T);
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
memoryStream.Write(data, 0, data.Length);
memoryStream.Position = 0;
returnValue = (T)binaryFormatter.Deserialize(memoryStream);
memoryStream.Close();
memoryStream.Dispose();
return returnValue;
}
以上分别是二进制和xml的方法,但是xml局限性大,相比之下二进制的方法比较好用。
罗列一些c#的序列化方法
最新推荐文章于 2020-12-04 09:48:56 发布