C#序列化与反序列化

        public static string Obj2XmlStr<T>(T obj)
            where T : class
        {
            XmlSerializer ser = new XmlSerializer(typeof(T));
            MemoryStream mem = new MemoryStream();
            XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
            ser.Serialize(writer, obj);
            writer.Close();
            return Encoding.UTF8.GetString(mem.ToArray());
        }

        public static T XmlStr2Obj<T>(string xmlStr)
            where T : class
        {
            XmlSerializer xs = new XmlSerializer(typeof(T));
            StreamReader sr = new StreamReader(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(xmlStr)), System.Text.Encoding.UTF8);
            T obj = (T)xs.Deserialize(sr);
            sr.Close();
            return obj;
        }    
        /// <summary>
        /// 二进制方式序列化对象
        /// </summary>
        /// <param name="testUser"></param>
        public static string Serialize<T>(T obj)
        {
            MemoryStream ms = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);

            return ms.ToString();
        }

        /// <summary>
        /// 二进制方式反序列化对象
        /// </summary>
        /// <returns></returns>
        public static T DeSerialize<T>(string str) where T:class
        {
            MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str));
            BinaryFormatter formatter = new BinaryFormatter();
            T t = formatter.Deserialize(ms) as T;
            return t;
        }    

 

posted @ 2013-12-26 12:33  合法勒索夫  阅读(147)  评论(0)    收藏  举报