我有一個人對象,並需要將其存儲爲字節[],再次檢索的byte [],並轉換爲個人對象 和BinaryFormatter的是通過使用一個MemoryStream轉換對象(即像人,僱員的任何對象)爲byte []在Silverlight
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; .... byte[] bPersonInfo = null; using (MemoryStream mStream = new MemoryStream()) { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(mStream, personInfo); bPersonInfo = mStream.ToArray(); } .... // Do what you have to do with bPersonInfo which is a byte Array... // To Convert it back PersonInfo pInfo = null; using (MemoryStream mStream = new MemoryStream(bPersonInfo)){ System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new BinaryFormatter(); pInfo = (PersonInfo)bf.DeSerialize(mStream); } // Now pInfo is a PersonInfo object.
希望這有助於 最好的問候, 湯姆在Silverlight
我有在現有的WinForms應用程序轉換爲Silverlight的同樣的問題。具有非法功能的現有函數AllocHGlobal和FreeHGlobal是: public static byte [] RawSerialize(object anything) { int rawsize = Marshal.SizeOf(anything); IntPtr buffer = Marshal.AllocHGlobal(rawsize); Marshal.StructureToPtr(anything,buffer,false); byte [] rawdatas = new byte [rawsize]; Marshal.Copy(buffer,rawdatas,0,rawsize); Marshal.FreeHGlobal(buffer); Marshal.FreeHGlobal(buffer); return rawdatas; } – Jeffrey 2011-05-13 17:12:50