您好,登錄后才能下訂單哦!
剛剛碰巧群里有人問這個問題,而之前的博客中并沒有提及,打算弄一篇博客簡單提及一下這個知識點。
MSDN文檔中提及了序列化、反序列化的概念,這里引用一下。
序列化:將對象狀態轉換為可保持或傳輸的形式的過程。
反序列化:是序列化的逆過程,就是將流轉換為對象的過程。
這兩個過程一起保證數據易于傳輸和存儲。
詳細的請參考:http://msdn.microsoft.com/zh-cn/library/7ay27kt9(v=vs.100).aspx。
下面直接給出完整的代碼,該代碼演示了如何序列化一個對象以及反序列化(還原對象)的過程。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Object student = new Student() { StudentID = "007", StudentName = "guwei4037" }; string result = ObjectToString<Object>(student); Console.WriteLine(result + "\r\n"); Student newResult = StringToObject<Student>(result); Console.WriteLine("ID:{0}, Name:{1}", newResult.StudentID, newResult.StudentName); } /// <summary> /// 對象轉字符串(序列化后轉Base64編碼字符串) /// </summary> /// <param name="obj">對象</param> /// <returns>字符串</returns> public static string ObjectToString<T>(T obj) { using (MemoryStream stream = new MemoryStream()) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, obj); stream.Position = 0; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return Convert.ToBase64String(buffer); } } /// <summary> /// 字符串轉對象(Base64編碼字符串反序列化為對象) /// </summary> /// <param name="str">字符串</param> /// <returns>對象</returns> public static T StringToObject<T>(string str) { using (MemoryStream stream = new MemoryStream()) { byte[] bytes = Convert.FromBase64String(str); stream.Write(bytes, 0, bytes.Length); stream.Position = 0; IFormatter formatter = new BinaryFormatter(); return (T)formatter.Deserialize(stream); } } } /// <summary> /// 可序列化的類,用Serializable標示此類可序列化 /// </summary> [Serializable] public class Student { public string StudentID { get; set; } public string StudentName { get; set; } } }
運行結果截圖:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。