123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using System.Xml;
- using System.Xml.Serialization;
- namespace Common
- {
- public class SerializationHelper
- {
- private static Dictionary<int, XmlSerializer> serializer_dict = new Dictionary<int, XmlSerializer>();
- private SerializationHelper()
- {
- }
- public static XmlSerializer GetSerializer(Type t)
- {
- int hashCode = t.GetHashCode();
- if (!SerializationHelper.serializer_dict.ContainsKey(hashCode))
- {
- SerializationHelper.serializer_dict.Add(hashCode, new XmlSerializer(t));
- }
- return SerializationHelper.serializer_dict[hashCode];
- }
- public static object Load(Type type, string filename)
- {
- FileStream fileStream = null;
- object result;
- try
- {
- fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
- XmlSerializer xmlSerializer = new XmlSerializer(type);
- result = xmlSerializer.Deserialize(fileStream);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (fileStream != null)
- {
- fileStream.Close();
- }
- }
- return result;
- }
- public static bool Save(object obj, string filename)
- {
- bool result = false;
- FileStream fileStream = null;
- try
- {
- fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
- XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
- xmlSerializer.Serialize(fileStream, obj);
- result = true;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (fileStream != null)
- {
- fileStream.Close();
- }
- }
- return result;
- }
- public static string Serialize(object obj)
- {
- string result = "";
- XmlSerializer serializer = SerializationHelper.GetSerializer(obj.GetType());
- MemoryStream memoryStream = new MemoryStream();
- XmlTextWriter xmlTextWriter = null;
- StreamReader streamReader = null;
- try
- {
- xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
- xmlTextWriter.Formatting = Formatting.Indented;
- serializer.Serialize(xmlTextWriter, obj);
- memoryStream.Seek(0L, SeekOrigin.Begin);
- streamReader = new StreamReader(memoryStream);
- result = streamReader.ReadToEnd();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (xmlTextWriter != null)
- {
- xmlTextWriter.Close();
- }
- if (streamReader != null)
- {
- streamReader.Close();
- }
- memoryStream.Close();
- }
- return result;
- }
- public static object DeSerialize(Type type, string s)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(s);
- object result;
- try
- {
- XmlSerializer serializer = SerializationHelper.GetSerializer(type);
- result = serializer.Deserialize(new MemoryStream(bytes));
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return result;
- }
- }
- }
|